为函数'%/%'选择签名'Timespan#Timespan'的lubridate note“方法是什么意思?

问题描述:

当我运行在RI下面的代码得到一个奇怪的音符(只显示在我第一次运行的会话的代码):为函数'%/%'选择签名'Timespan#Timespan'的lubridate note“方法是什么意思?

> 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 

我倍加困惑:

  1. 我不清楚推荐的 的替代语法。 A#是R中的一个注释,所以假设散列意味着 意味着除散列之外的其他东西,但是什么?
  2. 它是否告诉我我做错了什么?这个提示似乎暗示这是一个供参考,但如果没有问题,一个供参考的参考是一个奇怪的事情。

这个警告只会在您第一次运行它时发生,提醒您做整数除法存在的问题是几个月或几年在其他单位(如小时或天)中不一定具有相同的长度。

假设我们将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 

从理论上讲,如果分部的两边都表示为时间段类别,应该可以避免警告。但我从来没有试图这样做。