当我在R中运行以下代码时,我得到一个奇怪的注释(它只在我第一次在会话中运行代码时出现):
> library(lubridate)
Attaching package: ‘lubridate’
The following object is masked from ‘package:base’:
date
Warning message:
package ‘lubridate’ was built under R version 3.3.2
> data.frame(i = interval(ymd(20140101), ymd(20160101)))$i %/% years(1)
Note: method with signature ‘Timespan#Timespan’ chosen for function ‘%/%’,
target signature ‘Interval#Period’.
"Interval#ANY", "ANY#Period" would also be valid
[1] 2
我很困惑:
答案 0 :(得分:4)
此警告仅在您第一次运行时发生,以提醒您整数除法的问题是数月或数年不一定在其他单位(如小时或天)中具有相同的长度。
假设我们将2014 - 2018年的时间间隔除以2年,那么说答案是4是不完全正确的,因为2016年是闰年,有366天。因此,如果您的度量单位仅为数年,那么它将是正确的,但如果您将其作为间隔(可以用年表示,也可以用天或小时表示),则它不是严格正确的。
实际上没有办法绕过警告(至少不是整数除法),因为警告始终是指向该点,即使您正在划分间隔%/%间隔或期间%/%期间。
但它只会在您第一次运行您的部门时显示,之后它会变得沉默。
data.frame(i = interval(ymd(20140101), ymd(20160101)))$i %/% years(1)
Note: method with signature ‘Timespan#Timespan’ chosen for function ‘%/%’,
target signature ‘Interval#Period’.
"Interval#ANY", "ANY#Period" would also be valid
[1] 2
data.frame(i = interval(ymd(20140101), ymd(20160101)))$i %/% years(1)
[1] 2
理论上,如果划分的双方都被表示为时间跨度类,则应该可以避免警告。但我从来没有试过这样做。