从列表中提取公共元素和以列表形式提取向量

时间:2016-02-11 02:00:43

标签: r

我有一个包含不同元素的列表和一个列出一些元素的向量,我想找出每个元素属于哪个列表索引号。

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的位置

2 个答案:

答案 0 :(得分:2)

使用Maplapply

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;。

相关问题