How to change column names of many dataframes in R?

Viewed 45

I would like to make the same changes to the column names of many dataframes. Here's an example:

ChangeNames <- function(x) {
  colnames(x) <- toupper(colnames(x))
  colnames(x) <- str_replace_all(colnames(x), pattern = "_", replacement = ".")
  return(x)
}

files <- list(mtcars, nycflights13::flights, nycflights13::airports)
lapply(files, ChangeNames)

I know that lapply only changes a copy. How do I change the underlying dataframe? I want to still use each dataframe separately.

1 Answers

Create a named list, apply the function and use list2env to reflect those changes in the original dataframes.

library(nycflights13)

files <- dplyr::lst(mtcars, flights, airports)
result <- lapply(files, ChangeNames)
list2env(result, .GlobalEnv)
Related