在字符向量列表中查找任何交集

Posted

技术标签:

【中文标题】在字符向量列表中查找任何交集【英文标题】:Find any intersection in a list of character vectors 【发布时间】:2021-05-20 00:39:35 【问题描述】:

我有一个listcharacter vectors,其中一些有相交的元素,但整个list 不一定有相交的元素。

例如:

l <- list(c("a"),c("a","b"),c("a","c"),c("d"),c("e"),c("h","i"))

我想找到任何相交的元素。对于此示例,这将是: a

显然

Reduce(intersect,l)

不适合这样做,因为它会查找与整个 list 相交的元素。

有什么想法吗?

【问题讨论】:

【参考方案1】:

对于列表中的每个元素,使用table 找出它的计数,并仅选择出现在多个列表中的那些值。

vals <- unique(unlist(l))

intersect_vals <- names(Filter(function(x) x > 1, 
                  rowSums(sapply(l, function(x) table(factor(x, vals))) > 0)))

intersect_vals
#[1] "a"

【讨论】:

以上是关于在字符向量列表中查找任何交集的主要内容,如果未能解决你的问题,请参考以下文章

在 Python Pandas 中查找两列的交集 -> 字符串列表

向量中的字符串交集给出分段错误

查找分组变量的并集和交集

向量中的字符串交集给出分段错误

查找两个嵌套列表的交集?

R语言常用函数:交集intersect并集union找不同setdiff判断相同setequal的运用