我有一个包含不同元素的列表和一个列出一些元素的向量,我想找出每个元素属于哪个列表索引号。
x <- list ( c ( 1,2 ), c( 3,4 ), c( 5,6 ), c( 7,8 ), c( 9,10 ) , c( 11,12 ))
y <- c( 2,3,4,6,8,10,11,12 )
# Desired Output in a list
[[1]]
[1] 2
[[2]]
[1] 3 4
[[3]]
[1] 6
[[4]]
[1] 8
[[5]]
[1] 10
[[6]]
[1] 11 12
如果两个都是两个向量,我将使用相交,并找出y中元素x的位置
答案 0 :(得分:2)
使用Map
或lapply
Map(intersect, x, list(y))
#or
lapply(x, intersect, y)
#[[1]]
#[1] 2
#
#[[2]]
#[1] 3 4
#
#[[3]]
#[1] 6
#
#[[4]]
#[1] 8
#
#[[5]]
#[1] 10
#
#[[6]]
#[1] 11 12
答案 1 :(得分:1)
lapply 与%in%相结合可以得到答案:
lapply(x,function(i){i[i%in%y]})
lapply 将该功能应用于&#39; x&#39;的每个列表元素,%in%评估&#39; i&#的每个元素39;在&#39; y&#39;。