Переключение с верхнего на нижний регистр в нескольких фреймах данных - PullRequest
0 голосов
/ 25 сентября 2018

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

df1 <- data.frame(COL1 = 1, COL2 = "test")
df2 <- data.frame(COLL = 10, COLL1 = "test")
df3 <- data.frame(COLLA = 25, COLLA1 = "test")
df4 <- data.frame(COLLAC= "dummy", COLLAC1 = "test")

dfList <- c("df1", "df2", "df3", "df4")

lapply(dfList, function (x){
  names(x) <- tolower(names(x))
})

Что я делаю не так?

Ответы [ 3 ]

0 голосов
/ 25 сентября 2018

Поскольку вы хотите сохранить все свои фреймы данных в глобальной среде, в такой ситуации я бы предпочел использовать цикл for.Это позволяет вам работать в глобальной среде (lapply требует, чтобы вы что-то возвращали в глобальную среду).

dfList <- c("df1", "df2", "df3", "df4")
for (i in dfList){
  tmp <- get(i)
  assign(i, setNames(tmp, tolower(names(tmp))))
}
0 голосов
/ 25 сентября 2018

Другие ответы отлично работают, но здесь есть еще один вариант.Всякий раз, когда я хочу очистить имена своих столбцов, я всегда обращаюсь к пакету janitor.Существует множество вариантов очистки имен с помощью этого пакета.https://cran.r -project.org / web / packages / janitor / janitor.pdf

library(purrr)
library(janitor)

list(df1, df2, df3, df4) %>% 
  map(janitor::clean_names)
#> [[1]]
#>   col1 col2
#> 1    1 test
#> 
#> [[2]]
#>   coll coll1
#> 1   10  test
#> 
#> [[3]]
#>   colla colla1
#> 1    25   test
#> 
#> [[4]]
#>   collac collac1
#> 1  dummy    test
0 голосов
/ 25 сентября 2018

Ваш список не содержит ваши data.frames.Списки начинаются с list(), а не c().Вот рабочий пример:

df1 <- data.frame(COL1 = 1, COL2 = "test")
df2 <- data.frame(COLL = 10, COLL1 = "test")
df3 <- data.frame(COLLA = 25, COLLA1 = "test")
df4 <- data.frame(COLLAC= "dummy", COLLAC1 = "test")

dfList <- list(df1, df2, df3, df4)

dfList <- lapply(dfList, function (x){
  names(x) <- tolower(names(x))
  return(x)
})

> dfList
[[1]]
  col1 col2
1    1 test

[[2]]
  coll coll1
1   10  test

[[3]]
  colla colla1
1    25   test

[[4]]
  collac collac1
1  dummy    test

names(dfList) <- paste0("df", 1:4)
list2env(dfList, .GlobalEnv)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...