R:返回False的False或NA

R:返回False的False或NA,r,logical-operators,na,R,Logical Operators,Na,在R语言中,我需要一个返回a | b的操作符,除非a或b是NA,另一个是F 目前,F | NA返回NA,我希望它返回F 此函数应与向量一起使用 有什么想法吗?明白了 myor = function(a,b){ !((is.na(a) & !b) | (is.na(b) & !a) | (!a & !b)) } > myor(T,T) [1] TRUE > myor(T,F) [1] TRUE > myor(F,F) [1] FALSE >

在R语言中,我需要一个返回a | b的操作符,除非a或b是NA,另一个是F

目前,F | NA返回NA,我希望它返回F

此函数应与向量一起使用

有什么想法吗?

明白了

myor = function(a,b){
  !((is.na(a) & !b) | (is.na(b) & !a) | (!a & !b))
}   

> myor(T,T)
[1] TRUE
> myor(T,F)
[1] TRUE
> myor(F,F)
[1] FALSE
> myor(F,NA)
[1] FALSE
> myor(NA,NA)
[1] NA
> myor(T,NA)
[1] TRUE

那么
TRUE | NA
NA | NA
?@Cath,目前,T | NA返回NA,NA | NA返回NA。应该保留此行为。使用我的R版本(3.3.0)
TRUE | NA
返回
TRUE
…我在上面的评论中犯了错误。正如我在开始时所说的,这个函数应该返回与“or”函数|相同的结果,除非F | NA.我在上面的注释中犯了错误。正如我在开始时所说的,这个函数应该返回与“or”函数相同的结果,除了当F|NA.then
如果((is.NA(a)和!b)|(is.NA(b)和!a))那么FALSE,否则a | b
应该工作。。。(或
ifelse((is.na(a)和!b)|(is.na(b)和!a),FALSE,a | b)