我在 R 的全局环境中有这些数据框:
file_1 <- data.frame(id = 1:5, samplecolumn = letters[1:5], value = rnorm(5))
file_2 <- data.frame(id = 1:5, sample_column = letters[6:10], value = rnorm(5))
file_3 <- data.frame(id = 1:5, othercolumn = letters[11:15], value = rnorm(5))
abc_1 <- data.frame(id = 1:5, samplecolumn = letters[16:20], value = rnorm(5))
对于所有以“file_”开头的数据框,如果有一个名为“samplecolumn”的列,我想将其重命名为“sample_column”。
我认为我可以通过首先识别以“file_”开头的所有数据框,然后重命名它们来做到这一点:
all_objects <- ls()
file_objects <- all_objects[grep("^file_", all_objects)]
for (file in file_objects) {
df <- get(file)
if ("samplecolumn" %in% colnames(df)) {
colnames(df)[colnames(df) == "samplecolumn"] <- "sample_column"
assign(file, df)
}
}
这是在 R 中执行此操作的正确方法吗?
这是基本的 R 方法。使用 获取数据框
ls/mget
,然后使用lapply
函数进行更改。创建于 2024-09-28,使用reprex v2.1.0
或者,更简单,使用
setNames
。创建于 2024-09-28,使用reprex v2.1.0
data.table::setnames
很适合这个。如果您真的想将 df 弄乱回 .GlobalEnv,请将其放入管道中
|> list2env()
。