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< /代码>。