Как l oop через объекты dataframes в среде - PullRequest
1 голос
/ 20 июня 2020

Я сохраняю свои фреймы данных в .RData, используя разные имена

  save(df1, "df1.RData")
  save(df2,"df2.RData")
  save(df3,"df3.RData")

Когда я читаю эти файлы .RData последовательно, я получаю эти 3 объекта в своей среде Как я могу выбрать каждый из этих объектов из моя среда в al oop. Если я укажу строку «df1», «df2» и «df3», это не сработает

Пожалуйста, дайте мне знать

Ответы [ 2 ]

1 голос
/ 20 июня 2020

1) L oop через имена и для каждого кадра данных сохраните его.

for(nm in ls(.GlobalEnv)) {
  if (is.data.frame(get(nm, .GlobalEnv))) 
    save(list = nm, file = paste0(nm, ".RData"))
}

1a) Если указано выше выполняется в глобальной среде, то его можно дополнительно сократить до:

for(nm in ls()) if (is.data.frame(get(nm))) 
  save(list = nm, file = paste0(nm, ".RData"))

2) Другой подход - создать именованный логический вектор is.df с одним компонентом на объект. Его компоненты имеют значение ИСТИНА для фреймов данных и ЛОЖЬ в противном случае:

is.df <- unlist(eapply(.GlobalEnv, is.data.frame))
dfnames <- names(is.df)[is.df]
for(nm in dfnames) save(list = nm, file = paste0(nm, ".RData"))

3) Если бы в именах фреймов данных был отличительный образец, мы могли бы использовать это:

for(nm in ls(.GlobalEnv, pattern = "^df")) 
  save(list = nm, file = paste0(nm, ".RData"))
0 голосов
/ 20 июня 2020

save сохраняет файл на диск. load("<filename>") загружает объект обратно в текущее окружение. Поэтому после load() просто укажите объект по имени: head(df1), например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...