【问题标题】:What is the difference between short (&,|) and long (&&, ||) forms of AND, OR logical operators in R? [duplicate]R中AND,OR逻辑运算符的短(&,|)和长(&&,||)形式有什么区别? [复制]
【发布时间】:2011-10-31 12:40:58
【问题描述】:

可能重复:
R: subset() logical-and operator for chaining conditions should be & not &&

R 中 AND、OR 逻辑运算符的短(&|)和长(&&||)形式有什么区别?

例如:

  1. x==0 & y==1
  2. x==0 && y==1
  3. x==0 | y==1
  4. x==0 || y==1

我总是在我的代码中使用简写形式。有什么缺点吗?

【问题讨论】:

    标签: r logical-operators


    【解决方案1】:

    &| - 是逐元素的,可用于向量运算,而 ||&& 始终生成单个 TRUEFALSE

    他们的区别:

    > x <- 1:5
    > y <- 5:1
    > (x > 2) & (y < 3) 
      [1] FALSE FALSE FALSE  TRUE  TRUE
    > (x > 2) && (y < 3) # here operaand && takes only 1'st elements from logical
                         # vectors (x>2) and (y<3)
    > FALSE
    

    所以,&amp;&amp;|| 常用于 if (condition) state_1 else state_2 语句中,如 处理长度为1的向量

    【讨论】:

    • 当只使用第一个值时,在 if 子句中添加 ´||´ 和 ´&&´ 可能会很有用。
    • @lselzer ... 因为||&amp;&amp; short-circuit,即它们不会不必要地检查后续子句。即A || B || C 停止评估并在找到TRUE 元素后立即返回TRUE,而A &amp;&amp; B &amp;&amp; C 停止评估并在找到FALSE 元素后立即返回FALSE ...这在if (!is.na(x) &amp;&amp; x&gt;0) 等构造...
    • @Max,一个微妙的点,但&amp;&amp; 并不总是返回TRUEFALSE。考虑TRUE &amp;&amp; NA,它返回NA
    猜你喜欢
    • 1970-01-01
    • 2010-12-03
    • 2011-03-10
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多