涉及NA的逻辑运算

时间:2019-12-18 16:21:02

标签: r logical-operators na missing-data

由于“ is.na(NA)”返回true,而“ NA> 0”返回NA,因此“ is.na(NA)&(NA> 0)”应返回true。

  

is.na(NA)&NA> 0

     

[1]不适用

以同样的方式,“!is.na(NA)”返回false,而“ NA> 0”返回NA,“!is.na(NA)&(NA> 0)”也应返回NA。但是R返回false。为什么会这样?

  

!is.na(NA)&NA> 0

     

[1]错误

1 个答案:

答案 0 :(得分:2)

根据?"&"

  

NA是有效的逻辑对象。如果x或y的分量为NA,则结果不确定时,结果为NA。换句话说,NA&TRUE评估为NA,但NA&FALSE评估为FALSE。请参见下面的示例。

在OP的条件下,第一个计算为

TRUE & NA #(is.na(NA)#[1] TRUE;NA > 0#[1] NA)

第二个是

FALSE & NA #(!is.na(NA)#[1] FALSE)