假设我们有两个具有相同层数的嵌套列表:
list1 <- list(list("a", "b"),
list("c", "d"))
list2 <- list(list("e", "f"),
list("g", "h"))
现在我想设置list1
的子列表的元素名称根据 list2
的值。所需的输出相当于使用以下内容:
list1 <- list(list(e = "a",
f = "b"),
list(g = "c",
h = "d"))
但是,我需要一种方法来不手动执行此操作,而是从 list2
中提取值并将它们作为名称分配给适当的列表级别 list1
.
最佳答案
基础 R:在 lapply()
中使用 setNames()
:
list1 <- lapply(
seq_along(list1),
\(i) setNames(list1[[i]], list2[[i]])
)
tidyverse:使用purrr::map2()
同时循环两个列表:
library(purrr)
list1 <- map2(list1, list2, set_names)
两种情况下的输出:
[[1]]
[[1]]$e
[1] "a"
[[1]]$f
[1] "b"
[[2]]
[[2]]$g
[1] "c"
[[2]]$h
[1] "d"
关于R - 根据另一个嵌套列表中的值设置嵌套列表元素的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74413927/