gap*_*ppy 14 r list set-intersection
是否有接收列表的功能x
,并返回一个列表y
,以便y[[i]] = intersect(x[[1]][[i]], x[[2]][[i]], ...)
?
如果没有,是否有R方式在几行中编码?
Ben*_*ker 11
这有用吗?
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)))
Run Code Online (Sandbox Code Playgroud)
(intersect
只需要两个参数,因此您必须使用Reduce
其他步骤)
PS我没有在任何困难的情况下尝试这个 - 例如长度不均匀的列表.
似乎Reduce
可以简单地使用如下:
> Reduce(intersect, list(v1 = c("a","b","c","d"),
+ v2 = c("a","b","e"),
+ v3 = c("a","f","g")))
[1] "a"
Run Code Online (Sandbox Code Playgroud)