目标是重命名数据框列的列,但将数据框名添加到新列名中。
ex:从x到a_x和b_x。
为什么呢?因为我计划稍后合并集合,并希望列的清洁ID。
a = data.frame(x = c(1,2))
b = data.frame(x = c(3,4))
frameList = list(a = a, b = b)
newName = c(*frameName+'_'+'x')
names = lapply(names, setNames, nm = newName)
list2env(names,.GlobalEnv)
答案 0 :(得分:2)
这是给你的一种方式。我使用[wcp-carousel id="37122"]
的长度遍历frameList
中的每个数据框。对于每个数据框中的列名,我使用了数据框的名称(即frameList
)并将其过去到数据框中的列名。
names(frameList)
答案 1 :(得分:1)
或另一个选项是Map
Map(function(x, y) setNames(x, paste(y, names(x), sep="_")), frameList, names(frameList))
#$a
# a_x a_y
#1 1 1
#2 2 2
#$b
# b_x b_y
#1 3 1
#2 4 2
或tidyverse
library(purrr)
library(dplyr)
f1 <- function(x, y) paste(y, x, sep="_")
map2(frameList, names(frameList), ~ .x %>%
rename_all(f1, .y))
如果我们以相反的顺序需要它,这更简单
map2(frameList, names(frameList), ~ .x %>%
rename_all(paste, sep="_", .y))