Переименовать столбцы в нескольких наборах данных R

У меня есть куча наборов данных, для которых я хотел бы применить функцию переименования ко всем столбцам. Я построил функцию и дошел до того, что у меня есть список фреймов данных с переименованными столбцами, но я застрял в том, как переназначить эти фреймы данных обратно на исходные. Может ли кто-нибудь помочь мне на этом последнем шаге или посоветовать более простой способ сделать это?

A = data.frame(Var 1 = c(1,2,3,4), Var 2 = c(1,2,3,4))
B = data.frame(Var 3 = c(1,3,4,7), Var 4 = c(1,2,3,4))

better_names <- function(x) {
    names(x) <- names(x) %>% stringr::str_replace_all("\\s","_") %>% tolower
    return(x)
}

list_data <- list(A, B)
l <- lapply(list_data, better_names)

person Addison    schedule 04.12.2020    source источник
comment
Вы хотели сохранить data.frame в своем объекте list_data? Попробуйте setnames из data.table переименовать ваши data.frame столбцы на месте. Тело better_names может быть: data.table::setnames(x, names(x) %>% stringr::str_replace_all("\\s","_") %>% tolower)[] (но имейте в виду, что вполне вероятно, что data.frame A и data.frame B также будут иметь новые имена, если вы используете этот подход.   -  person A5C1D2H2I1M1N2O1R2T1    schedule 05.12.2020


Ответы (1)


Мы можем назвать выход list, а затем использовать list2env для внесения изменений в объекты, присутствующие в глобальной среде (хотя и не рекомендуется).

names(l) <- c('A', 'B')
list2env(l, .GlobalEnv)

-проверить объекты

A
#  var_1 var_2
#1     1     1
#2     2     2
#3     3     3
#4     4     4

B
#  var_3 var_4
#1     1     1
#2     3     2
#3     4     3
#4     7     4

данные

A <- data.frame(`Var 1` = c(1,2,3,4), `Var 2` = c(1,2,3,4), check.names = FALSE)
B <- data.frame(`Var 3` = c(1,3,4,7), `Var 4` = c(1,2,3,4), check.names = FALSE)
person akrun    schedule 04.12.2020