R中的恒等式和向量:MyData1==c(“a”、“b”)如何工作(或不工作)

R中的恒等式和向量:MyData1==c(“a”、“b”)如何工作(或不工作),r,vector,boolean-expression,R,Vector,Boolean Expression,我犯了一个错误,没有在%c(“a”、“b”)中写入MyData1% …我写了MyData1==c(“a”,“b”) …但我想知道这是如何以及为什么不起作用的。为什么会发生以下情况 > MyData1 <- rep(c("a", "b", "b"), 4) > MyData1 [1] "a" "b" "b" "a" "b"

我犯了一个错误,没有在%c(“a”、“b”)中写入
MyData1%

…我写了
MyData1==c(“a”,“b”)

…但我想知道这是如何以及为什么不起作用的。为什么会发生以下情况

> MyData1 <- rep(c("a", "b", "b"), 4)
> MyData1
 [1] "a" "b" "b" "a" "b" "b" "a" "b" "b" "a" "b" "b"
> MyData1 == c("a", "b")
 [1]  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE

…我一点也不聪明…现在无论我测试向量的1个或2个元素,我都会得到两个项目

这是因为向量循环
=
执行元素级比较,而%中的
%检查整个向量中的值,并且该元素的位置无关紧要

当一个向量/值的长度比另一个短时,R将回收该值并使其长度相等

当你这样做的时候

MyData1 == c("a", "b")
MyData1
中的第一个值与
中的“a”
进行比较,
MyData1
中的第二个值与
中的“b”
进行比较。现在,由于向量
c(“a”,“b”)
更短,R再次回收相同的值,因此将
MyData1
的第三个值与
“a”
进行比较,第四个值与
“b”
进行比较,依此类推

在下一部分中,向量循环再次发生,但这次方向相反

MyData1[1] == c("a", "b")
MyData1[1]
的长度为1,因此将
MyData1[1]
的第一个值与
的“a”
进行比较,现在再次重复相同的值以与
的“b”
进行比较,从而得到

#[1]  TRUE FALSE
#[1]  TRUE FALSE