结合& (AND)和| (或)a>对照

时间:2014-09-23 15:03:25

标签: r

好吧,我想这真的很基本,但我对结果感到困惑。也许有人可以向我解释R如何解释我输入的内容。 我只是在R里玩,我想检查是否&和|按照我的预期工作,如“和”或“或”。这是我试过的:

x <- 1:10
y <- 7:-2
rbind(x, y, x&y>5, y&x>5, x|y>5)

这就是我得到的:

    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
x    1    2    3    4    5    6    7    8    9    10
y    7    6    5    4    3    2    1    0   -1    -2
     1    1    0    0    0    0    0    0    0     0
     0    0    0    0    0    1    1    0    1     1
     1    1    1    1    1    1    1    1    1     1

所以我理解了我的错误,修改为“x&gt; 5&amp; y&gt; 5”和“x&gt; 5 | y&gt; 5”,并得到了我期望的结果。

但是有人可以向我解释一下R对我的初始输入有什么了解,以及为什么x&amp; y和y&amp; x甚至没有给出相同的结果!如果有人善意地指出它意味着什么?..

3 个答案:

答案 0 :(得分:1)

运算符优先级有关。 >&更紧密。

因此,您的计算相当于x & (y > 5),在单词中,x为非零且y大于5。

答案 1 :(得分:0)

x&y>5被解释为x不是FALSEy>5。请注意,0将评估为FALSE

答案 2 :(得分:0)

嗯,请注意x&yy&x 会给出相同的结果

all(x&y == y&x)
# [1] TRUE

添加>部分时会出现差异。这与R中的运算符优先级有关。请参阅?Syntax帮助页面了解操作顺序。事实证明>的优先级高于&,所以你真的在做

x&(y>5)
y&(x>5)

所以你会得到不同的结果。