Как разбить кадры данных в списке на несколько кадров данных в R? [Дубликат]

8
задан Frank 1 June 2015 в 23:30
поделиться

5 ответов

Попробуйте list2env(eqRegions,envir=.GlobalEnv)

22
ответ дан Marat Talipov 18 August 2018 в 20:08
поделиться
  • 1
    вы избили меня на несколько секунд! +1 – BrodieG 28 May 2015 в 20:36

attach(eqRegions) должно быть достаточно. Но я рекомендую работать с ними в форме list, используя lapply. Я гарантирую, что это приведет к более простому коду.

3
ответ дан Matthew Plourde 18 August 2018 в 20:08
поделиться
  • 1
    Это помещает список в ваш путь поиска, поэтому переменные не будут отображаться с ls, но в примере в вашем комментарии вы можете получить 8 с помощью `8`. – Matthew Plourde 28 May 2015 в 21:01
  • 2
    Привет, Мэтью, извините, что я удалил комментарий, reposted: я не могу понять, как это работает: например, s <- split(mtcars, mtcars$cyl); attach(s). Использование ls() не отображается, а использование '8' не дает финальной таблицы (оно работает, если я обозначил уровни уровня цилиндров [1: 3] – user20650 28 May 2015 в 23:33
  • 3
    Чтобы ссылаться на переменные с нестандартными именами, например те, которые начинаются с числа, окружают имя в backticks вместо кавычек. – Matthew Plourde 29 May 2015 в 12:16
  • 4
    ha .. спасибо ... узнать что-то новое каждый день – user20650 29 May 2015 в 12:18

list2env возвращает кадры данных в глобальную среду, имена которой являются именами в списке. Альтернативой, если вы хотите иметь одно и то же имя для фреймов данных, но идентифицированное i из цикла:

for (i in 1:length(eqRegions)) {
  assign(paste0("eqRegions", i), as.data.frame(eqRegions[[i]]))
}

Это может быть медленным, если длина, если список слишком длинный.

1
ответ дан PrashanthVajjhala 18 August 2018 в 20:08
поделиться

В качестве альтернативы, «наилучшей практикой» при расщеплении данных, как это, является сохранение данных в кадре, как предусмотрено split. Для его обработки вы используете либо один из sapply, либо lapply (многие факторы) и записываете вывод обратно в список. Например:

eqRegionsProcessed <- lapply(eqRegions, function(df) {
    ## do something meaningful here
})

Это, очевидно, работает только в том случае, если вы делаете одно и то же для каждого файла data.frame.

Если вы действительно должны разбить их и разобраться с каждым данным. кадр однозначно, то ответы @ MatthewPlourde и @ MaratTalipov будут работать.

2
ответ дан r2evans 18 August 2018 в 20:08
поделиться

Это должно сработать. Имя созданных data.frames будет равно именам внутри eqDataAll$SeismicRegion. В любом случае, эта практика заполнения отдельных data.frames не рекомендуется. Чем больше я работаю с R, тем больше я люблю / пользуюсь списком.

lapply(names(eqRegions), function(x) assign(x, eqRegions[[x]], envir = .GlobalEnv))

edit: опубликовано решение list2env. Не знал о функции list2env.

4
ответ дан Vlo 18 August 2018 в 20:08
поделиться
  • 1
    Извините за downvote, но это излишне сложно – Matthew Plourde 28 May 2015 в 20:45
Другие вопросы по тегам:

Похожие вопросы: