【问题标题】:R: a False or NA that returns FalseR:返回 False 的 False 或 NA
【发布时间】:2016-05-11 08:20:00
【问题描述】:

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

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

这个函数应该适用于向量。

有什么想法吗?

【问题讨论】:

  • TRUE | NA 呢? NA | NA?
  • @Cath,目前,T | NA 返回 NA 和 NA | NA 返回 NA。应该保留这种行为。
  • 使用我的 R 版本 (3.3.0) TRUE | NA 返回 TRUE....
  • 我在上面评论中的错误。正如我在开头所说的,这个函数应该返回与“或”函数相同的结果,除了 F|NA 时。

标签: r logical-operators na


【解决方案1】:

知道了!

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

【讨论】:

  • 我在上面评论中的错误。正如我一开始所说,这个函数应该返回与“或”函数相同的返回值,除了 F|NA 时。
  • 那么if ((is.na(a) & !b) | (is.na(b) & !a)) then FALSE else a|b 应该可以工作...(或ifelse((is.na(a) & !b) | (is.na(b) & !a), FALSE, a|b) 用于向量
猜你喜欢
  • 1970-01-01
  • 2018-09-28
  • 2011-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
  • 1970-01-01
相关资源
最近更新 更多