我有两个名为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循环,但我想知道是否有更优雅的方法呢?
答案 0 :(得分:3)
如果您希望将输出作为列表列表,则可以执行以下操作:
lapply(GroundStates, function(x) lapply(naMat, function(y) intersect(x,y)))