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

R中and、OR逻辑运算符的短(&;、|)和长(&;、| |)形式有什么区别?,r,logical-operators,R,Logical Operators,可能重复: R中的and、OR逻辑运算符的短(&,|)和长(&&,|)形式有什么区别 例如: x==0&y==1 x==0&&y==1 x==0 | y==1 x==0 | | y==1 我总是在代码中使用缩写形式。它有任何缺陷吗?&和-是按元素的,可以用于向量运算,而|和&总是生成单个TRUE或FALSE 请确认差异: > x <- 1:5 > y <- 5:1 > (x > 2) & (y < 3) [1] FALSE FALSE F

可能重复:

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

例如:

  • x==0&y==1
  • x==0&&y==1
  • x==0 | y==1
  • x==0 | | y==1

  • 我总是在代码中使用缩写形式。它有任何缺陷吗?

    &
    -是按元素的,可以用于向量运算,而
    |
    &
    总是生成单个
    TRUE
    FALSE

    请确认差异:

    > 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
    
    >xy(x>2)和(y<3)
    [1] 假假假真
    >(x>2)和&(y<3)#这里的操作和&&只从逻辑元素中提取第一个元素
    #向量(x>2)和(y)为假
    
    因此,
    &&
    | |
    通常用于
    if(condition)state_1 else state_2
    语句中,如下所示:
    处理长度为
    1

    的向量时,如果只使用第一个值,那么在if子句中添加´´´´´´和´&´&´&´´´´´´´´´´´´´´´´´´´&´´´´´&´´´´´´´´´´&´´´´´´´´´´´´´´´´´´´´´´´´´´´´一旦找到
    TRUE
    元素,它就会返回
    TRUE
    ,而
    a&&B&&C
    一旦找到
    FALSE
    元素,它就会停止计算并返回
    FALSE
    。这在
    if(!is.na(x)&&x>0等构造中非常有用< /代码>…@马克斯,一个微妙的点,但是<代码> & & 并不总是返回<代码>真的< /代码>或<代码> false <代码>。请考虑<代码> Trand & Na < /C> >,它返回<代码> n< /代码>。