2016-06-17 4 views
1

as.numeric`私はas.numeric/dseconds()を好むべきでない理由はありますか?後者は少し速いと思われる。両方とも同じ結果を出します。 lubridate `` period`

> as.numeric(lubridate::ymd_hms("2015-12-31 23:59:59 UTC") - lubridate::ymd_hms("2015-01-01 00:00:00 UTC"), units = "secs") 
[1] 31535999 
> interval(lubridate::ymd_hms("2015-01-01 00:00:00 UTC"), lubridate::ymd_hms("2015-12-31 23:59:59 UTC"))/dseconds(1) 
[1] 31535999 

とマイクロベンチマークテスト:

summary(microbenchmark::microbenchmark(
    as.numeric(lubridate::ymd_hms("2016-12-31 23:59:59 UTC") - lubridate::ymd_hms("2016-01-01 00:00:00 UTC"), units = "secs"), 
    interval(lubridate::ymd_hms("2016-01-01 00:00:00 UTC"), lubridate::ymd_hms("2016-12-31 23:59:59 UTC"))/dseconds(1), 
    times = 100L, unit = "ms")) 

   min  lq  mean median  uq  max neval 
as.numeric 3.095075 3.161979 3.320435 3.225082 3.293127 5.634390 100 
/dseconds(1) 3.940120 4.067465 4.209389 4.163069 4.259054 6.072688 100 

私はそこに推測を与えることは、関係は大きな違いは基本的にありません余分な機能interval/dseconds()

+0

実際、あなたのケースでは、あなたは 'as.numeric'にチェックを入れることができると思います。 'interval'あなたが –

+0

@Eric Lecoutre(例えば四半期)以下の標準的な差異を計算する必要がある場合には本当にいいです:' difftime'ドキュメントから 'as.numeric'は'「秒」、「分」、「時間を扱うことができます"、"日 "、"週 "です。 '期間 'は' dweeks、ddays、dminutes、dseconds'です。だから全く同じですか?それは、as.numericにはさらに多くのものがあるようですね? – Christoph

答えて

1

のためのいくつかのさらなる理由であります結果。 @ Stibuの答えhereのコメントも参照してください。

関連する問題