NA == 1检查返回NA
问题描述:
有人能解释我为什么:NA == 1检查返回NA
NA == 1 #NA #expect FALSE
NA == NA #NA #expect TRUE
1 == NA #NA #expect FALSE
NA == TRUE #NA #expect FALSE
使用的一个活生生的例子是df[df$SomeAttribute == 1,]
其中一些df$SomeAttribute
有NA
值。
我知道可以用which(df$SomeAttribute == 1)
只是质疑NA
逻辑运算的完整性。
答
NA
仅表示值缺失/未知。因此NA == 1
收益率为NA
。与==
比较的结果是未知的,因为我们不知道缺失值是1
还是别的。
相同的推理可以应用于其他测试,这就是为什么他们都返回NA
。
正如@akrun在评论中指出,正确的方法来检查值x
缺失是否是使用功能is.na(x)
。类型x == NA
的比较不会给出预期的结果。
+0
谢谢,我想R应用更严格的逻辑条件,即未知可能不是已知值,如果没有证明,否则,因此NA不等于1(产生FALSE)。 – stkubr
NA的逻辑运算返回NA。使用'is.na' – akrun
如果一个值是未知的,因此可能是任何东西,比较也是未知的,可能是任何东西。 – Roland