Длина интервала lubridate

Какой лучший способ получить продолжительность времени, представленного интервалом в lubridate, в указанных единицах? Все, что я могу придумать, это что-то вроде следующей беспорядочной штуки:

> ival
[1] 2011-01-01 03:00:46 -- 2011-10-21 18:33:44

> difftime(attr(ival, "start") + as.numeric(ival), attr(ival, "start"), 'days')
Time difference of 293.6479 days

(Я также добавил это как запрос функции на https://github.com/hadley/lubridate/issues/105, предполагая, что лучшего способа нет - но, возможно, кто-то здесь знает такой способ)

Обновление - очевидно, функция difftime тоже не справляется с этим. Вот пример.

> (d1 <- as.POSIXct("2011-03-12 12:00:00", 'America/Chicago'))
[1] "2011-03-12 12:00:00 CST"
> (d2 <- d1 + days(1))  # Gives desired result
[1] "2011-03-13 12:00:00 CDT"
> (i2 <- d2 - d1)
[1] 2011-03-12 12:00:00 -- 2011-03-13 12:00:00 
> difftime(attr(i2, "start") + as.numeric(i2), attr(i2, "start"), 'days')
Time difference of 23 hours

Как я упоминаю ниже, я думаю, что одним из хороших способов справиться с этим была бы реализация функции /.interval, которая не приводила бы сначала свой вход к period.

7
задан Ken Williams 9 January 2012 в 18:58
поделиться