r - 在多个数据集上更改 R 中的 colname
问题描述
我正在使用约 10 个数据集,需要更改列名以匹配所有数据集,每个数据集包含相同数量的列。目前这就是我正在做的事情,但我知道必须有一种更简洁的方式来输入它。
第 1 周到第 10 周是我正在使用的数据集。
colnames(week1) <- c("Itemsinfolder", "Foldersize (KB)", "Foldersubfoldersize (KB)", "User", "Level1folder", "Level2folder", "Level3folder", "Level4folder", "Level5folder")
colnames(week2) <- c("Itemsinfolder", "Foldersize (KB)", "Foldersubfoldersize (KB)", "User", "Level1folder", "Level2folder", "Level3folder", "Level4folder", "Level5folder")
colnames(week3) <- c("Itemsinfolder", "Foldersize (KB)", "Foldersubfoldersize (KB)", "User", "Level1folder", "Level2folder", "Level3folder", "Level4folder", "Level5folder")
colnames(week4) <- c("Itemsinfolder", "Foldersize (KB)", "Foldersubfoldersize (KB)", "User", "Level1folder", "Level2folder", "Level3folder", "Level4folder", "Level5folder")
等到第 10 周
谢谢
解决方案
我们可以通过将数据集保存在 a 中并使用首选名称 ('vec')list
更改列名来立即执行此操作。vector
如果我们需要更改全局环境中的对象,请使用list2env
(不过,最好将其保留在list
)
lst <- lapply(mget(paste0("week", 1:10)), setNames, vec)
list2env(lst, envir = .GlobalEnv)
另一种选择是assign
在for
循环中
wks <- paste0("week", 1:10)
for(wk in wks) assign(wk, `names<-`(get(wk), vec))
使用可重现的示例
week1 <- data.frame(col1 = 1:5, col2 = 6:10)
set.seed(24)
week2 <- data.frame(col1 = rnorm(5), col2 = rnorm(5))
wks <- paste0('week', 1:2)
vec <- paste0("V", 1:2)
for(wk in wks) assign(wk, `names<-`(get(wk), vec))
数据
vec <- c("Itemsinfolder", "Foldersize (KB)", "Foldersubfoldersize (KB)", "User",
"Level1folder", "Level2folder", "Level3folder", "Level4folder", "Level5folder")