使用 purrr::map*() 将嵌套列表元素分配给另一个嵌套列表

Use purrr::map*() to assign a nested list element to another nested list

我有两个列表:

listA <- list(group1 = tibble(names = LETTERS[1:5],
                              names_num = 1:5),
              group2 = tibble(names = LETTERS[11:13],
                              names_num = 1:3))
  
listB <- list(group1 = list(labels = NULL,
                            order = 5:1),
              group2 = list(labels = NULL,
                            order = 3:1))

我的目标是通过为每个组插入 listA 中的 names 向量来修改 listB$groupX$labels,并按照 listB$groupX$order 指定的顺序。所需的输出如下所示:

> listB_mod
$group1
$group1$labels
[1] "E" "D" "C" "B" "A"
$group1$order
[1] 5 4 3 2 1

$group2
$group2$labels
[1] "M" "L" "K"
$group2$order
[1] 3 2 1

有没有办法实现这个,最好使用 purrr::map() 系列?

非常感谢任何提示!

大部分逻辑与“purrr”功能无关,但您当然可以使用 map2 将逻辑应用于两个列表中的所有成对项目:

listB_mod = map2(
    listA, listB,
    ~ list(labels = .x$names[match(.x$names_num, .y$order)], order = .y$order)
)