当持续时间少于60秒时,lubridate :: duration(“ minutes”)返回错误

时间:2019-10-18 19:22:51

标签: r lubridate

我计时的事件通常持续数分钟,但偶尔会少于60秒,并且lubridate :: duration()返回错误值。

我可以通过检查大于或小于60秒的时差来使用IF和2个持续时间函数来解决此问题,但这似乎是一种不雅的方法。

library(lubridate)
for (x in c(59, 60)) {
  startTime <- Sys.time()
Sys.sleep(x)
print(duration(as.numeric(Sys.time() - startTime), "minutes" ))
}

[1] "3543.86645793915s (~59.06 minutes)"
[1] "60.0540399551392s (~1 minutes)"

我只希望时间少于60秒(以十进制分钟为单位)或几秒钟。 谢谢。

1 个答案:

答案 0 :(得分:1)

我想您的时间间隔是difftime类的对象。如果是这样,请参见下一个脚本:

#Create object difftime
a <- Sys.time()
b <- Sys.time()
DELTA_TIME <- b - a
#print the duration
print(duration(as.numeric(DELTA_TIME,units='mins'),units='minutes'))

请参见以这种方式打印持续时间将接受difftime类的任何对象。重要的是as.numeric

函数中的参数unit ='mins'