【发布时间】:2021-11-05 23:25:11
【问题描述】:
我有三个列表,每个列表都包含许多小标题。我想根据 tibble 中的特定值来命名列表中的对象。我知道如何一次处理一个列表。为了方便起见,我将在示例中使用向量:
library("purrr")
list1 <- list(c(id = "ABC", val=1), c(id = "DEF", val = 2), c(id = "GHI", val = 3))
list2 <- list(c(id = "JKL", val=4), c(id = "MNO", val = 5), c(id = "PRS", val = 6))
list3 <- list(c(id = "TUW", val=7), c(id = "XYZ", val = 8), c(id = "ZYX", val = 8))
names(list1) <- map_chr(list1, ~ .x[["id"]])
names(list2) <- map_chr(list2, ~ .x[["id"]])
names(list3) <- map_chr(list3, ~ .x[["id"]])
它有效,但我想知道是否有任何批量方法可以完成它。我尝试使用 for 循环,但它不起作用,它创建了单独的 i 变量,但不会重命名列表中的对象:
for (i in c(list1, list2, list3)) {names(i) <- map_chr(i, ~ .x[["id"]])}
我知道for 循环在 R 中被认为是一种不好的做法,因此非常感谢其他建议。
【问题讨论】: