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

Combine info from two same-length lists

我有两个长度为 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))

我们可以使用 Map 并从 l1

中删除 l2 中的索引
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])