Cambiar nombres de columna en una lista de marcos de datos en R




dataframe (2)

Con lapply puedes hacerlo de la siguiente manera.

Crear datos de muestra:

df1 <- data.frame(A = 1, B = 2, C = 3)
df2 <- data.frame(X = 1, Y = 2, Z = 3)
dfList <- list(df1,df2)
colnames <- c("USAF","WBAN","YR--MODAHRMN") 

Luego, pase la lista usando setNames y proporcione el vector de nuevos nombres de columna como segundo argumento para setNames :

lapply(dfList, setNames, colnames)
#[[1]]
#  USAF WBAN YR--MODAHRMN
#1    1    2            3
#
#[[2]]
#  USAF WBAN YR--MODAHRMN
#1    1    2            3

Editar

Si desea asignar los data.frames al entorno global, puede modificar el código de esta manera:

dfList <- list(df1 = df1, df2 = df2)
list2env(lapply(dfList, setNames, colnames), .GlobalEnv)

Objetivo: cambiar los nombres de columna de todos los marcos de datos en el entorno global de la siguiente lista

colnames de los del entorno global

Entonces.

0) Los nombres de columna son:

 colnames = c("USAF","WBAN","YR--MODAHRMN") 

1) Tengo los siguientes data.frames: df1, df2.

2) Los puse en una lista:

  dfList <- list(df1,df2)

3) Recorrer la lista:

 for (df in dfList){
   colnames(df)=colnames
 }

Pero esto crea un nuevo df con los nombres de columna que necesito, no cambia los nombres de columna originales en df1, df2. ¿Por qué? ¿Podría ser una solución? Gracias

Puede algo como:

 lapply(dfList, function(x) {colnames(dfList)=colnames})

¿trabajo?


Si desea que el bucle for funcione, no debe pasar todo el data.frame como argumento.

for (df in 1:length(dfList))
  colnames(dfList[[df]]) <- colnames




dataframe