使用 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)
)
我有两个列表:
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)
)