为函数'%/%'选择签名'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
我倍加困惑:
- 我不清楚推荐的 的替代语法。 A#是R中的一个注释,所以假设散列意味着 意味着除散列之外的其他东西,但是什么?
- 它是否告诉我我做错了什么?这个提示似乎暗示这是一个供参考,但如果没有问题,一个供参考的参考是一个奇怪的事情。
答
这个警告只会在您第一次运行它时发生,提醒您做整数除法存在的问题是几个月或几年在其他单位(如小时或天)中不一定具有相同的长度。
假设我们将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
从理论上讲,如果分部的两边都表示为时间段类别,应该可以避免警告。但我从来没有试图这样做。