等于(?)函数不返回相同的值

时间:2016-10-11 02:15:12

标签: r

当我遇到一个问题时,我正在阅读this post

为什么(在帖子的数据框中)此函数不会返回相同的值

>df[df$X3==c(1,2),]

   X1    X2 X3
1  s1 45.11  1
4  s1 51.41  2
10 s1 43.12  2
17 s5 25.40  1

这个功能?

>df[df$X3 %in% c(1,2),] 

   X1    X2 X3
1  s1 45.11  1
2  s1 45.13  1
3  s1 53.42  2
4  s1 51.41  2
9  s3 43.58  2
10 s1 43.12  2
17 s5 25.40  1
18 s5 25.50  1

我曾经相信两者都是平等的。它们之间的区别是什么?

提前致谢。

1 个答案:

答案 0 :(得分:3)

df$X3 == c(1,2)没有按你的想法行事。 c(1,2)首先被回收为与length(df$X3)具有相同的长度,然后执行逐元素==。我们举一个小例子:

1:4 == 2:3  ## which is doing `1:4 == c(2,3,2,3)`
# [1] FALSE FALSE FALSE FALSE

我们得到所有FALSE。另一方面,如果我们这样做

1:4 %in% 2:3
# [1] FALSE  TRUE  TRUE FALSE

我们得到两个TRUE