lubridate :: duration ("minutes") возвращает ошибку, если продолжительность меньше 60 секунд - PullRequest
2 голосов
/ 18 октября 2019

Я синхронизирую события, которые обычно имеют длительность в несколько минут, но иногда событие будет меньше 60 секунд, и lubridate :: duration () возвращает ошибочное значение.

Я могу исправить эту проблему с помощью IFи 2 функции продолжительности, проверяя разницу во времени, большую или меньшую, чем 60 секунд, но это кажется таким неэффективным методом.

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 Ответ

1 голос
/ 18 октября 2019

Полагаю, ваш интервал времени - это объекты класса 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. Важным является аргумент unit = 'mins' в функции as.numeric

...