本文介绍了R中列表的交集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否有一个接收列表 x 并返回列表 y 的函数,使得 y [[i]] = intersect(x [[1]] [[i]],x [[2]] [[i]],...)吗?
Is there a function that receives a list x and returns a list y such that y[[i]] = intersect(x[[1]][[i]], x[[2]][[i]], ...) ?
如果没有,是否有R方法可以在几行中进行编码?
If not, is there a R way to code it in a couple of lines?
推荐答案这项工作有效吗?
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 作为附加步骤)
(intersect only takes two arguments so you have to use Reduce as an additional step)
PS我没有在任何困难的情况下尝试过此操作-例如长度不均的列表.
PS I haven't tried this on any hard cases -- e.g. lists of uneven length.
更多推荐
R中列表的交集
发布评论