在R中,如果从NA中减去一个数字,它将返回NA:
> x <- 1
> NA - x
[1] NA
Run Code Online (Sandbox Code Playgroud)
但是,如果您尝试从NA中减去日期,则会返回错误:
> x <- as.Date("2014-04-22")
> NA - x
Error in `-.Date`(NA, x) : can only subtract from "Date" objects
Run Code Online (Sandbox Code Playgroud)
我对R返回错误的原因感兴趣.据我所知,"日期"对象只是与原点的整数差异(默认为1970-01-01)的he表示.
这应该工作:
> as.Date(NA)-as.Date("2014-04-22")
Time difference of NA days
Run Code Online (Sandbox Code Playgroud)
但是,您可以从日期中减去一个整数:
> as.Date("2014-04-22")-NA
[1] NA
> as.Date("2014-04-22")-2
[1] "2014-04-20"
Run Code Online (Sandbox Code Playgroud)
原因是-操作符实际上是一个S3方法 - "重载"(调用方法选择)是根据其第一个参数的类型完成的.尝试:
> get("-.Date")
Run Code Online (Sandbox Code Playgroud)
如果这是一个S4方法,它可能已被重载以考虑第二个参数的类型.
有关S3方法调度机制的更多详细信息,请参见此处.
| 归档时间: |
|
| 查看次数: |
917 次 |
| 最近记录: |