Tenho esses quadros de dados em R dentro do ambiente global:
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))
Para todos os quadros de dados que começam com "file_", se houver uma coluna com o nome "samplecolumn", quero renomeá-la como "sample_column".
Pensei que poderia fazer isso primeiro identificando todos os quadros de dados começando com "file_" e depois renomeando-os:
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)
}
}
Essa é a maneira correta de fazer isso em R?
Aqui está uma maneira básica de R. Obtenha os quadros de dados com
ls/mget
, entãolapply
uma função fazendo as alterações.Criado em 2024-09-28 com reprex v2.1.0
Ou, mais simples, com
setNames
.Criado em 2024-09-28 com reprex v2.1.0
data.table::setnames
é bom para isso.Se você realmente quiser colocar os dfs de volta em .GlobalEnv, canalize para um
|> list2env()
.