gpt4 book ai didi

r - 在 R 中,为什么从 NA 中减去数字会返回 NA 而从 NA 中减去日期会返回错误?

转载 作者:行者123 更新时间:2023-12-03 21:45:15 27 4
gpt4 key购买 nike

在 R 中,如果从 NA 中减去一个数字,它将返回 NA:

> x <- 1
> NA - x
[1] NA

但是如果你尝试从 NA 中减去一个日期,它会返回一个错误:
> x <- as.Date("2014-04-22")
> NA - x
Error in `-.Date`(NA, x) : can only subtract from "Date" objects

我对为什么 R 返回错误感兴趣。据我了解,“日期”对象只是与原点(默认为 1970-01-01)的整数差异的表示形式。

最佳答案

这应该有效:

> as.Date(NA)-as.Date("2014-04-22")
Time difference of NA days

但是,您可以从日期中减去一个整数:
> as.Date("2014-04-22")-NA
[1] NA
> as.Date("2014-04-22")-2
[1] "2014-04-20"

造成这种情况的原因是 -运算符实际上是一个 S3 方法——“重载”(调用方法选择)是根据其第一个参数的类型完成的。尝试:
> get("-.Date")

如果这是一个 S4 方法,它可能会被重载以考虑第二个参数的类型。

有关 S3 方法调度机制的更多详细信息,请参阅 here .

关于r - 在 R 中,为什么从 NA 中减去数字会返回 NA 而从 NA 中减去日期会返回错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23225071/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com