lists <- lapply(vector("list", 5), function(x) sample(1:100,50,replace=T))
如何提取lists
内(或通常在一组向量中)至少n(2,3,4,5)个向量中存在的所有值?
对于n = 5,此question已经给出了解决方案(例如intersect()
),但对于n
答案 0 :(得分:3)
如果我理解正确,您可以按照以下方式进行操作。假设您对至少3个列表元素之间共享的值感兴趣。
combos <- combn(seq_along(lists), 3, simplify = FALSE)
lapply(combos, function(i) Reduce(intersect, lists[i]))
如果您只对实际值感兴趣,
unique(unlist(lapply(combos, function(i) Reduce(intersect, lists[i]))))
在combos
中,我们存储了长度为n的列表的所有可能组合(此处为3)。
答案 1 :(得分:2)
您可以使用unique
简单地缩小列表,然后将其合并到一个unlist
的向量中,并使用table
进行计数。
n <- 3
names(which(table(unlist(lapply(lists, unique))) >= n))
此代码的输出是名称的矢量。