【发布时间】:2017-08-03 11:31:40
【问题描述】:
我刚刚遇到了一个我想了解的 R 的奇怪行为。
当我执行NA^0 时,它会给出 1 而不是 NA 正如我所期望的那样。
示例:
v1 <- c(2,NA,1)
v1^0
[1] 1 1 1
v1**0
[1] 1 1 1
^ 和 ** 是算术运算符 (help("^")),例如 -、+ 等,在他们的情况下给出 NA:
v1+0
[1] 2 NA 1
v1-0
[1] 2 NA 1
为什么不同的算子对 NA 的表现不同?
【问题讨论】:
-
我记得我的数学老师说过 “任何升到 0 的东西都是 1”。
-
这就是它的作用。此结果已被用于许多 SO 答案,以在存在 NA 值的情况下生成矢量化解决方案。
-
NULL^0 = numeric(0) -
NA 不 等同于 NULL。来自帮助文件
?NA:“NA 是长度为 1 的逻辑常数,其中包含缺失值指示符。”来自?NULL,“NULL 表示 R 中的空对象。”这些是不同的概念。考虑一个带有变量 v1 的 data.frame,df。df$v1 <- NA将变量的值设置为缺失,而df$v1 <- NULL删除变量。
标签: r