如何使用purrr::map系列函数实现嵌套列表元素的赋值与排序
实现代码
首先加载依赖包:
library(tidyverse)
核心实现(使用purrr::map2,符合优先使用map系列函数的要求):
listB_mod <- map2(listA, listB, ~{ # .x 对应listA的当前分组元素,.y 对应listB的当前分组元素 .y$labels <- .x$names[.y$order] .y })
逻辑说明
map2()会并行遍历listA和listB的同名/同位置分组元素,无需单独处理分组匹配逻辑- 每组内直接用listB当前分组的
order作为索引,提取listA对应分组的names列值,赋值给labels字段即可,原有order字段会完整保留 - 若不确定两个列表的分组排序是否完全一致,可以先对齐分组名称再执行操作,写法更稳妥:
listB_mod <- map2(listA[names(listB)], listB, ~{ .y$labels <- .x$names[.y$order] .y })
执行后输出的listB_mod和你给出的预期结果完全一致。
内容的提问来源于stack exchange,提问作者jonathanvo
相关产品推荐
相关产品推荐

