2016-08-22 114 views
3

有人能解释我为什么: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$SomeAttributeNA值。

我知道可以用which(df$SomeAttribute == 1)只是质疑NA逻辑运算的完整性。

+0

NA的逻辑运算返回NA。使用'is.na' – akrun

+0

如果一个值是未知的,因此可能是任何东西,比较也是未知的,可能是任何东西。 – Roland

回答

4

NA仅表示值缺失/未知。因此NA == 1收益率为NA。与==比较的结果是未知的,因为我们不知道缺失值是1还是别的。

相同的推理可以应用于其他测试,这就是为什么他们都返回NA


正如@akrun在评论中指出,正确的方法来检查值x缺失是否是使用功能is.na(x)。类型x == NA的比较不会给出预期的结果。

+0

谢谢,我想R应用更严格的逻辑条件,即未知可能不是已知值,如果没有证明,否则,因此NA不等于1(产生FALSE)。 – stkubr