我想在数据框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
的行,但不能包含任何其他数字。这会给我行B
和D
。
我如何在R?中做到这一点?
我已尝试x[which(x=="1,3,4,9")]
,但这会考虑到顺序。
由于
答案 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)]