Как объяснено в документации для as.duration
, доступной через ?as.duration
, as.duration
вернет точные измерения времени, тогда как as.period
обеспечит относительные измерения. Далее утверждается, что:
Следовательно, сопоставление один к одному между длительностями и периодами не существует. При использовании с объектом периода as.duration предоставляет неточную оценку длины периода;
Поэтому использование time_length
приведет к различным результатам для as.period
и as.duration
.
Это также более подробно описано в документации для time_length
, интервалы просто не эквивалентны длительностям .
Чтобы получить тот же результат для %--%
иas.period
, сначала преобразовать периоды в интервалы следующим образом:
res <- a %--% b
dur <- as.duration(res)
per <- as.period(res)
time_length(as.interval(per,a), "year")
[1] 31.31694
time_length(res,"year")
[1] 31.31694