【问题标题】: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 相交的元素。

有什么想法吗?

【问题讨论】:

    标签: r list reduce intersect


    【解决方案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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-24
      • 2017-01-23
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多