r按元素相交于两个列表
我有两个整数向量列表,分别命名为r按元素相交于两个列表,r,lapply,R,Lapply,我有两个整数向量列表,分别命名为GroundStates(长度=3)和naMat(长度=4)。 我希望列表元素相交,这意味着我希望GroundStates中的每个向量与naMat中的每个向量相交 我尝试使用嵌套的lappy(): 这也产生了一个空向量 我确实知道列表之间有交叉点,因为我尝试对每个列表中的一个向量调用unlist(),并将它们交叉 当然,我总是可以使用for循环,但我想知道是否有更简单的方法来实现这一点?如果希望输出为列表列表,可以执行以下操作: lapply(GroundStat
GroundStates
(长度=3)和naMat
(长度=4)。
我希望列表元素相交,这意味着我希望GroundStates
中的每个向量与naMat
中的每个向量相交
我尝试使用嵌套的lappy()
:
这也产生了一个空向量
我确实知道列表之间有交叉点,因为我尝试对每个列表中的一个向量调用unlist()
,并将它们交叉
当然,我总是可以使用for循环,但我想知道是否有更简单的方法来实现这一点?如果希望输出为列表列表,可以执行以下操作:
lapply(GroundStates, function(x) lapply(naMat, function(y) intersect(x,y)))
你的意思是像
intersect(unlist(GroundStates),unlist(naMat))
?你能发布一个示例数据集吗?显然,您正在使它变得比需要的更复杂。@user1614062请注意,这将有“重复项”,即设置L[[i]][[j]]
和L[[j]][[i]]
(whereL@Ferdinand.kraft谢谢你告诉我这一点。尽管我在报告中没有看到重复的output@user1614062它们可能是无序的,但它们将在那里,因为intersect(x,y)
和intersect(y,x)
返回相同的集合。
GS_conut_EP<-Reduce(intersect, c(GroundStates,naMat))
lapply(GroundStates, function(x) lapply(naMat, function(y) intersect(x,y)))