r元素相交两个列表

时间:2013-08-27 16:35:52

标签: r lapply

我有两个名为GroundStates(长度= 3)和naMat(长度= 4)的整数向量列表。 我希望以元素方式交叉列表,这意味着我希望GroundStates中每个向量与naMat中每个向量的交叉。

我尝试使用嵌套的lapply()

GS_conut_EP<-lapply(1:3, function(i) intersect((GroundStates[i]),lapply(1:4,function(x) as.integer(unlist(naMat[x])))))

这产生了一个长度为3的列表,但所有三个元素都是空的。

我也尝试过使用Reduce()

GS_conut_EP<-Reduce(intersect, c(GroundStates,naMat))

这也产生了一个空载体。

我知道列表之间存在交叉,因为我尝试在每个列表中的一个向量上调用unlist()并将它们相交。

当然,我总是可以使用for循环,但我想知道是否有更优雅的方法呢?

1 个答案:

答案 0 :(得分:3)

如果您希望将输出作为列表列表,则可以执行以下操作:

lapply(GroundStates, function(x) lapply(naMat, function(y) intersect(x,y)))