使用 purrr 函数并行迭代两个嵌套列表
Iterate over two nested lists in parallel using purrr functions
我正在使用一些 purrr
函数并发现(令我高兴的是)purrr::at_depth(.x, .depth, .f, ...)
,它是 purrr::map(x, . %>% map(fun))
的缩写。
问题: 当我有两个嵌套列表时,是否有类似的功能或正确的“purrr
-方式”做同样的事情我想并行迭代
举个例子:
x <- list(list(10, 20), list(30, 40))
y <- list(list(1, 2), list(3, 4))
a <- list()
for(i in seq_along(x)) {
a[[i]] <- map2(x[[i]], y[[i]], `+`)
}
这可行,但它很脏,我想避免 for 循环。
您有列表的列表,并且 +
未针对列表进行矢量化,您可以使用 map2
两次,第一个 map2
同时循环遍历 x、y,第二个 map2
以元素方式添加子列表:
map2(x, y, map2, `+`)
#[[1]]
#[[1]][[1]]
#[1] 11
#[[1]][[2]]
#[1] 22
#[[2]]
#[[2]][[1]]
#[1] 33
#[[2]][[2]]
#[1] 44
我正在使用一些 purrr
函数并发现(令我高兴的是)purrr::at_depth(.x, .depth, .f, ...)
,它是 purrr::map(x, . %>% map(fun))
的缩写。
问题: 当我有两个嵌套列表时,是否有类似的功能或正确的“purrr
-方式”做同样的事情我想并行迭代
举个例子:
x <- list(list(10, 20), list(30, 40))
y <- list(list(1, 2), list(3, 4))
a <- list()
for(i in seq_along(x)) {
a[[i]] <- map2(x[[i]], y[[i]], `+`)
}
这可行,但它很脏,我想避免 for 循环。
您有列表的列表,并且 +
未针对列表进行矢量化,您可以使用 map2
两次,第一个 map2
同时循环遍历 x、y,第二个 map2
以元素方式添加子列表:
map2(x, y, map2, `+`)
#[[1]]
#[[1]][[1]]
#[1] 11
#[[1]][[2]]
#[1] 22
#[[2]]
#[[2]][[1]]
#[1] 33
#[[2]][[2]]
#[1] 44