当我在RI中运行以下代码时会得到一个奇怪的注释(它只在我第一次在会话中运行代码时出现):
> 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
Run Code Online (Sandbox Code Playgroud)
我倍感困惑:
该警告仅在您第一次运行时出现,以提醒您进行整数除法会产生问题,即月或年不一定与其他单位(例如小时或天)具有相同的长度。
假设我们将2014--2018年的间隔除以2年,那么说答案为4并不完全正确,因为2016年是a年,有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
Run Code Online (Sandbox Code Playgroud)
从理论上讲,如果分隔的两面都表示为时间跨度类,则应该避免发出警告。但是我从未尝试过这样做。