【问题标题】:Iterate over two nested lists in parallel using purrr functions使用 purrr 函数并行迭代两个嵌套列表
【发布时间】:2017-01-11 15:32:19
【问题描述】:

我正在玩一些purrr 的功能并发现(令我高兴的是)purrr::at_depth(.x, .depth, .f, ...)purrr::map(x, . %>% map(fun)) 的缩写。

问题: 当我有两个要并行迭代的嵌套列表时,是否有类似的功能或正确的“purrr-way”来做同样的事情

举个例子:

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 循环。

【问题讨论】:

    标签: r purrr


    【解决方案1】:

    您有列表列表,而+ 未针对列表进行矢量化,您可以使用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
    

    【讨论】:

    • 很好,这就是我想要的。谢谢!
    猜你喜欢
    • 2019-06-25
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多