如何选择具有特定数字序列的特定行

时间:2017-12-20 21:49:09

标签: r

我想在数据框X中选择仅包含某些数字的某些行(顺序无关紧要),而不是其他行:

A   1,  2,  3,  4,  9,  11, 27
B   1,  3,  4,  9           
C   2,  5,  8,  12, 42, 45  
D   3,  1,  9,  4           

在这种情况下,我想以任何顺序选择数字为1,3,4,9的行,但不能包含任何其他数字。这会给我行BD。 我如何在R?中做到这一点?

我已尝试x[which(x=="1,3,4,9")],但这会考虑到顺序。

由于

1 个答案:

答案 0 :(得分:0)

您想要选择包含1,3,4,9的列表元素吗?我假设x是一个列表




  x<  -  list(
'A'= c(1,2,3,4, 9,11,27),
'B'= c(1,3,4,9),
'C'= c(2,5,8,12,42,45),& #xA;'D'= c(3,1,9,4)
)
  




尝试过滤(function(x)length(setdiff(x,c(1,3,4,9)))== 0,x)





处理任意数量的重复并选择 x ,其中包含1,3,4和9的子集。
或





过滤(函数(x)setequal(x,c(1,3,4,9)),x)





也处理任意数量的复制,但会拒绝不包含所有4个数字的集合。





您可以使用数组索引:





x [sapply(x,setdiff,c(1,3,4,9))]





您还可以查看%in%运算符,这是一个匹配的特殊调用:!any(is.na) (匹配(x,c(1,3,4,9)))




  x [sapply(lapply(x,`%) in%`,c(1,3,4,9)),all)]