如何在purrr中使用map2处理输入含列表的列表的场景?
使用purrr处理嵌套列表与普通列表的对应运算
先回顾map2的基础用法——它可以对两个长度相同的列表,按位置逐一取元素传入函数运算:
library(purrr) listA <- list(1, 2, 3) listB <- list(4, 5, 6) map2(listA, listB, sum)
当遇到其中一个输入是嵌套列表(列表的列表),另一个是普通列表时,比如:
listA <- list(list(1, 2, 3), list(4, 5, 6)) listB <- list(7, 8, 9)
要得到如下嵌套结构的运算结果:
list(list(8, 10, 12), list(11, 13, 15))
可以通过**嵌套使用map和map2**实现:
# 遍历listA中的每个子列表,对每个子列表和listB做map2运算 result <- map(listA, ~map2(.x, listB, sum)) print(result)
逻辑说明
外层map负责遍历listA中的每一个子列表,内层map2则将当前子列表的元素与listB对应位置的元素逐一传入sum函数相加,最终生成与listA结构一致的嵌套结果列表。
内容的提问来源于stack exchange,提问作者J. Doe
相关产品推荐
相关产品推荐

