Saulo
Novembro 24, 2021, 10:56pm
1
Olá pessoal,
Tenho uma lista de dataframes e gostaria de renomear algumas “colunas” que estão com nomes diferentes, porém não estou sabendo como proceder. Segue abaixo exemplo:
df1 <- iris %>% rename(Petal.Length.Red = Petal.Length)
df2 <- iris
df3 <- iris %>% rename(Petal.Length.Red = Petal.Length)
df4 <- iris
df5 <- iris %>% rename(Petal.Length.Red = Petal.Length)
dfs <- list(df1=df1, df2=df2, df3=df3, df4=df4, df5=df5)
novo_df <- dfs %>%
purrr::map(~.x %>%
rename(Petal.Length = Petal.Length.Red) %>%
select(Species, Petal.Length)
)```
1 curtida
clente
Novembro 25, 2021, 3:02pm
2
Olá, Saulo.
Acho que a solução abaixo faz o que você precisa.
library(tidyverse)
df1 <- rename(iris, Petal.Length.Red = Petal.Length)
df2 <- iris
df3 <- rename(iris, Petal.Length.Red = Petal.Length)
df4 <- iris
df5 <- rename(iris, Petal.Length.Red = Petal.Length)
dfs <- list(df1 = df1, df2 = df2, df3 = df3, df4 = df4, df5 = df5)
# Renomeia Petal.Length.Red -> Petal.Length e seleciona
renomear_selecionar <- function(df) {
if ("Petal.Length.Red" %in% names(df)) {
df <- rename(df, Petal.Length = Petal.Length.Red)
}
select(df, Species, Petal.Length)
}
purrr::map(dfs, renomear_selecionar)
Created on 2021-11-25 by the reprex package (v2.0.1)
Dicas:
Evite fazer pipes de uma linha só, pois eles podem deixar o leitor confuso.
Evite usar a notação de fórmula (~
) dentro do map()
quando a sua função for longa. A legibilidade do código diminui significativamente nesses casos.