我有多个项目数量相同的列表。我想重命名循环中的所有列表项目。例如,从列表项目名称 “a,B,c”,我想将它们重命名为 “first,second,third”:
#create 3 lists with items names a, b, c
list1 <- list(a=c(1:10), b=c(1:5), c=c(1:3))
list2 <- list(a="a", b="b", c="c")
list3 <- list(a=runif(4), b=runif(2), c=runif(4))
# wanted names of list items
names <- c("first", "second", "third")
new_list <- list()
for (i in 1:3){
for(j in seq_along(names)) {
n <- paste0(names[[j]])
new_list[[n]] <- assign(paste0("list_", i), get(paste0("list", i)))
}
}
但结果只重命名了第三个列表..我应该如何一次重命名所有列表项?
2条答案
按热度按时间rqcrx0a61#
我们可以使用
lapply()
和setNames()
:由reprex package(v2.0.1)于2023年3月7日创建
数据来自OP
我们也可以使用
for
循环和setNames)()
:由reprex package(v2.0.1)于2023年3月7日创建
kognpnkq2#
将所有列表放入一个list中,循环并分配新的名称,然后将它们放回环境中,注意我们正在覆盖原始列表: