合并来自两个相同长度列表的信息
Combine info from two same-length lists
我有两个长度为 N 的列表(l1
和 l2
),每个项目都是一个向量。我希望 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])
我有两个长度为 N 的列表(l1
和 l2
),每个项目都是一个向量。我希望 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])