合并两个相同长度列表中的信息

时间:2019-09-11 01:33:57

标签: r plyr purrr

我有两个长度为N的列表(l1l2),每个项目都是一个向量。我希望有l1中的向量的新列表,但不包括l2中的索引。

如何避免使用循环?

l1 <- list(a = c(5,2,9), b = c(4,7), c = c(1,3,1,9))
l2 <- list(a = 2, b = 1, c = c(1,3))

输出将如下所示:

new.list <- list(a = c(5,9), b = 7, c = c(3,9))

1 个答案:

答案 0 :(得分:2)

我们可以使用Map并从l2删除l1中存在的索引

Map(function(x, y) x[-y], l1, l2)

#$a
#[1] 5 9

#$b
#[1] 7

#$c
#[1] 3 9

purrr中,可以使用map2

purrr::map2(l1, l2, ~.x[-.y])