【问题标题】:Logical operators (AND, OR) with NA, TRUE and FALSE具有 NA、TRUE 和 FALSE 的逻辑运算符(AND、OR)
【发布时间】:2013-05-30 19:14:34
【问题描述】:

当与逻辑 OR (|) 和逻辑 AND (&) 一起使用时,我无法理解逻辑(布尔)值 TRUEFALSENA 的属性。以下是一些示例:

NA | TRUE
# [1] TRUE

NA | FALSE
# [1] NA

NA & TRUE
# [1] NA

NA & FALSE
# [1] FALSE

你能解释一下这些输出吗?

【问题讨论】:

    标签: r logical-operators r-faq


    【解决方案1】:

    引用?Logic

    NA 是一个有效的逻辑对象。如果 x 或 y 的分量为 NA,则 如果结果不明确,则结果将为 NA。换句话说,NA & TRUE 计算结果为 NA,但 NA & FALSE 计算结果为 FALSE。见 下面的例子。

    这里的关键是“模棱两可”这个词。 NA 代表“未知”的东西。所以NA & TRUE 可能是真也可能是假,但我们不知道。而NA & FALSE 将是 false,无论缺失值是什么。

    【讨论】:

      【解决方案2】:

      help("|")中有解释:

      NA 是一个有效的逻辑对象。其中xy 的组件 是NA,如果结果不明确,结果将是NA。在 换句话说,NA & TRUE 的计算结果为 NA,但 NA & FALSE 评估为FALSE。请参阅下面的示例。

      来自help("|")中的例子:

      x <- c(NA, FALSE, TRUE)
      names(x) <- as.character(x)
      outer(x, x, "&") ## AND table
      #        <NA> FALSE  TRUE
      # <NA>     NA FALSE    NA
      # FALSE FALSE FALSE FALSE
      # TRUE     NA FALSE  TRUE
      
      outer(x, x, "|") ## OR  table
      #        <NA> FALSE TRUE
      #  <NA>    NA    NA TRUE
      # FALSE    NA FALSE TRUE
      #  TRUE  TRUE  TRUE TRUE
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-31
        • 1970-01-01
        • 2021-11-18
        • 2011-09-18
        相关资源
        最近更新 更多