代码之家  ›  专栏  ›  技术社区  ›  dan

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

  •  0
  • dan  · 技术社区  · 5 年前

    我有一个 list 属于 character vector s、 有些有相交的元素,但不一定有贯穿整个区域的相交元素 列表 .

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

    我想找到任何相交的元素。在本例中: a

    很明显

    Reduce(intersect,l)
    

    列表 .

    1 回复  |  直到 5 年前
        1
  •  2
  •   Ronak Shah    5 年前

    对于列表中的每个元素,使用 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"