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

Meh*_*lar 7 r logical-operators

可能重复:
R:subset()逻辑 - 和链接条件的运算符应该是¬ &&

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

例如:

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

我总是在我的代码中使用简短形式.它有任何障碍吗?

Max*_*Max 7

&|- 是元素方面的,可以与向量运算一起使用,||而且,并且&&始终生成单个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
Run Code Online (Sandbox Code Playgroud)

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

  • @lselzer ...因为`||`和`&&`*短路*,即他们不会不必要地检查后续条款.即`A || B || C`一旦找到`TRUE`元素就停止评估并返回`TRUE`,而'A && B && C`停止评估,并在找到'FALSE`元素时立即返回`FALSE` ...这是在诸如`if(!is.na(x)&& x> 0)`之类的构造中很有用...... (3认同)