2016-06-17 3 views
1

/dseconds()as.numeric 이상으로 사용해야하는 이유가 있습니까? 후자가 좀 더 빠를 것 같습니다. 둘 다 같은 결과를줍니다. '주기'대`as.numeric`

> 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'은 표준 차이를 덜 계산할 필요가있는 경우에 유용합니다 (예 : quarter) –

+0

@Eric Lecoutre :'difftime' 문서'as.numeric'에서''secs ","mins ","hours ","일 ","주 ". '기간'은'dweeks, ddays, dminutes, dseconds'입니다. 그럼 꽤 똑같은가요? 'as.numeric'은 더 많이 보입니다. – Christoph

답변

1

에 대한 몇 가지 더 이유 결과. @ Stibu의 답변 here에있는 주석을 참조하십시오.