为了补充@Arun的答案,如果要比较的两个向量的大小不同,R
将回收较短的向量,以便R
比较两个相同大小的向量,然后进行成对比较。(即比较每个向量的第一个元素,然后比较eac向量的第二个元素,等等)。
例如,它不会将向量 1 的第一个元素与向量 2 中的所有元素进行比较。(因为你需要%in%
@Arun提到的)
例如,看看下面的内容。前两个示例产生等效输出
> c(0, 1, 2, 0, 1, 2) == c(1, 2)
[1] FALSE FALSE FALSE FALSE TRUE TRUE
> c(0, 1, 2, 0, 1, 2) == c(1, 2, 1, 2, 1, 2)
[1] FALSE FALSE FALSE FALSE TRUE TRUE
The comparisons being made are:
# element# LHS RHS areEqual
# 1. 0 1 FALSE <~~ Notice that the '0' from LHS is being compared with the '1' from RHS
# 2. 1 2 FALSE
# 3. 2 1 FALSE
# 4. 0 2 FALSE
# 5. 1 1 TRUE
# 6. 2 2 TRUE
这是另一个示例,LHS 相对于前一个示例“移动”。
> c(1, 2, 0, 1, 2, 0) == c(1, 2)
[1] TRUE TRUE FALSE FALSE FALSE FALSE
注意当较短的向量不是较长元素的精确倍数时会发生什么。(即,2 不进入 7)。
循环仍然发生,但较短的向量的一部分从上次循环中被裁剪。
R
给我们一个警告,以防万一我们没想到它们的大小不同
> c(1, 2, 3, 4, 1, 2, 0) == c(1, 2)
[1] TRUE TRUE FALSE FALSE TRUE TRUE FALSE
Warning message:
In c(1, 2, 3, 4, 1, 2, 0) == c(1, 2) :
longer object length is not a multiple of shorter object length
请注意,较长的向量是在 RHS 还是 LHS 上并不重要;回收工作是一样的
> c(1, 2) == c(1, 2, 0, 1, 2, 0)
[1] TRUE TRUE FALSE FALSE FALSE FALSE