为什么是 NA |假=开?

Why is NA | FALSE = NA?

我首先想知道为什么 FALSE | NA returns
#> [1] NA,而
TRUE | NAreturns
#> [1] TRUE

然后我看了"because the value of the missing element matters in NA | FALSE, these are missing"的解释。
所以我试过了 TRUE | FALSEFALSE | TRUE。 事实上,return #>[1] TRUE.
这是有道理的,因为 NA | FALSE 的结果取决于 NA 的值,所以它 return 是 NA,而 NA 的值对于 NA | TRUE 是否为 TRUE 并不重要。
但是,有人可以解释为什么 TRUE | FALSE return 是真的吗?
谢谢!

对于操作|输出是TRUE只要它的至少一个条件是TRUE。例如 TRUE | FALSE| FALSE | FALSE 给出 TRUE,但是 FALSE | FALSE| FALSE | FALSE 给出 FALSE 因为它没有 TRUE 条件。

因为 NA 可能是 TRUEFALSE,但您不知道它到底是什么。

  • 在这个意义上,FALSE | NA 可能等同于 FALSE | TRUE(给出 TRUE)或 FALSE | FALSE(给出 FALSE), 这是两种可能性,仍然不可用,所以 FALSE | NA returns NA.

  • 但是,对于 TRUE | NA,它始终是 TRUE,因为它不依赖于 NANA 作为 TRUEFALSE不影响结果)

本质上是询问是否至少有一侧是TRUE。因为有一个 TRUE 值,所以结果也是 TRUE

与以下相同:

1 > 0 | 0 > 2
[1] TRUE

反之,当询问是否所有边都是TRUE时:

TRUE & FALSE
[1] FALSE

与数值示例一样:

1 > 0 & 0 > 2
[1] FALSE