【问题标题】:Intersection of lists in RR中列表的交集
【发布时间】:2011-10-01 15:04:07
【问题描述】:

是否有函数接收列表x 并返回列表y 使得y[[i]] = intersect(x[[1]][[i]], x[[2]][[i]], ...)

如果没有,是否有一种 R 方法可以用几行代码对其进行编码?

【问题讨论】:

    标签: r list set-intersection


    【解决方案1】:

    这行得通吗?

    x <- list(list(1:3,2:4),list(2:3,4:5),list(3:7,4:5))
    maxlen <- max(sapply(x,length))
    lapply(seq(maxlen),function(i) Reduce(intersect,lapply(x,"[[",i)))
    

    intersect 只接受两个参数,因此您必须使用Reduce 作为附加步骤)

    PS 我没有在任何困难的情况下尝试过这个——例如。长度不等的列表。

    【讨论】:

      【解决方案2】:

      看来Reduce可以简单的使用如下:

      > Reduce(intersect,  list(v1 = c("a","b","c","d"), 
      +                         v2 = c("a","b","e"), 
      +                         v3 = c("a","f","g"))) 
      [1] "a"
      

      【讨论】:

        猜你喜欢
        • 2015-02-15
        • 2012-11-04
        • 2017-01-23
        • 2013-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多