【问题标题】:Why is NA | FALSE = NA? [duplicate]为什么是NA |错误 = 不适用? [复制]
【发布时间】:2020-05-01 22:49:33
【问题描述】:

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

然后我阅读了“因为缺少元素的值在NA | FALSE 中很重要,所以这些都丢失了”的解释。
所以我尝试了 TRUE | FALSEFALSE | TRUE。 事实上,两者都返回 #>[1] TRUE.
这是有道理的,因为NA | FALSE 的结果取决于 NA 的值,所以它返回 NA,而 NA 的值对于NA | TRUE 是否为 TRUE 并不重要。
但是,有人可以解释为什么 TRUE | FALSE 返回 TRUE 吗?
谢谢!

【问题讨论】:

    标签: r boolean logical-operators


    【解决方案1】:

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

    同理:

    1 > 0 | 0 > 2
    [1] TRUE
    

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

    TRUE & FALSE
    [1] FALSE
    

    与数字示例一样:

    1 > 0 & 0 > 2
    [1] FALSE
    

    【讨论】:

    • 不错。这也解释了& 运算符以及为什么TRUE & FALSE 返回FALSE...
    • 太棒了!谢谢。我仍然想知道为什么“至少一侧”必须为 TRUE 才能返回 TRUE。为什么“至少一侧”必须为 FALSE 才能返回 FALSE? ..但我现在对这个答案很满意:)
    • 可能有严重的解释(比如TRUE转成数值后,表示为1,所以优先于FALSE表示为@987654334 @),但我认为这主要是约定(即使是0/1 的分配也是):)
    【解决方案2】:

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

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

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

    【讨论】:

    • 来自 R 文档:“NA 是一个有效的逻辑对象。如果 x 或 y 的一个组件是 NA,则如果结果不明确,则结果将为 NA。换句话说,NA & TRUE 计算为NA,但 NA & FALSE 的计算结果为 FALSE。"
    • @otwtm 是的,正如我的回答中所解释的那样
    • 是的,只是想通过参考来支持您的答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 2011-07-01
    • 1970-01-01
    相关资源
    最近更新 更多