由于“ 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]错误
答案 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)