我有一个数据表
library(data.table)
DT <- data.table(a=c(1,2,3,4), b=c(4,4,4,4), x=c(1,3,5,5))
> DT
a b x
1: 1 4 1
2: 2 4 3
3: 3 4 5
4: 4 4 5
并且我想选择
x
等于a
或b
的行。显然,我可以使用> DT[x==a | x==b]
a b x
1: 1 4 1
给出正确的结果。但是,我认为对于许多专栏文章来说,效果应该也一样
> DT[x%in%c(a,b)]
a b x
1: 1 4 1
2: 2 4 3
但这会给我带来不一样的直观结果。有人可以帮忙吗?
最佳答案
表达方式
DT[x==a | x==b]
返回
DT
中的所有行,其中x
和a
中的值相等,或者x
和b
相等。这是期望的结果。另一方面
DT[x%in%c(a,b)]
返回
x
与c(a, b)
中的任何值匹配的所有行,而不仅仅是对应的值。因此出现第二行是因为x == 3
和3
(在某处)出现在a
中。关于r - 使用%in%子集一个data.table,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61158057/