R - 根据另一个嵌套列表中的值设置嵌套列表元素的名称

标签 r

假设我们有两个具有相同层数的嵌套列表:

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/

相关文章:

r - 有条件重复消除

r - 如何使用变量来获取 Shiny 中的 Input$?

行中的 R 表

r - 从 n 行的字符串中提取一个单词并将该单词附加为 R 中的新列

r - 基于模板与 R 中的匹配列更改数据框列的数据类型

r - R 中的树 : regression vs classification

r - Shiny 的服务器。打印 JSON 作为结果输出

r - 按年份过滤等于或小于阈值

r - 如何根据R中的两个分类变量创建一个新变量?

R : environment to data. 帧