2016-08-22 83 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