当我遇到一个问题时,我正在阅读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
我曾经相信两者都是平等的。它们之间的区别是什么?
提前致谢。
答案 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
。