我在R中尝试下面的代码,并期望两个条件语句给出相同的结果,但事实并非如此。请帮助理解这种行为。
> a
[1] 23 34 45 43
> b
[1] 45 34
> c
[1] 34 45
> a == b
[1] FALSE TRUE TRUE FALSE
> a == c
[1] FALSE FALSE FALSE FALSE
请注意 b
和 c
短于 a
. 当你运行 a==b
,R将调整长度 b
一样 a
以循环的方式,说。c(23,34,45,43) == c(45,34,45,34)
这就是你所看到的
你的向量正在被 "回收"。这意味着较短的向量正在通过重复自身来扩展,直到它与最长的向量的长度相匹配。当你比较(或进行其他相关运算)两个或多个不同长度的向量时,就会发生这种情况。
所以,当你比较你的向量时,例如 a
和 b
,
c(23, 34, 45, 43) == c(45, 34)
你其实是在比较
c(23, 34, 45, 43) == c(45, 34, 45, 34)
这就是:
# [1] FALSE TRUE TRUE FALSE