Как преобразовать список вложенных списков фреймов данных в фрейм данных? - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть список с вложенными списками данных.Структура моих данных следующая:

enter image description here

Как объединить все кадры вложенных списков в один?В этом примере я хочу объединить (rbind) 4 кадра данных в один!Для этого примера подумайте, что начальный список имеет длину 3 вместо 58.

Заранее спасибо!

1 Ответ

1 голос
/ 22 апреля 2019

Сначала выполните цикл внутри 0, 18 и bind_rows, затем используйте map_dfr, чтобы связать строки более высокого элемента, то есть, чтобы связать 0 и 18 вместе.

library(purrr)
lst=list(`0`=list(`1`=iris[1:5,]),`18`=c(`1`=list(iris[1:5,]),`2`=list(iris[1:5,])))
map_dfr(ls,~bind_rows(.,.id='id'))
#OR
bind_rows(unlist(lst,recursive = FALSE),.id = 'id')

Еще одним вариантом сохранения является использование unlist и purrr::imap для создания столбца id представляет полный путь каждого кадра данных

imap_dfr(unlist(lst,recursive = FALSE), ~data.frame(id=.y, .x, stringsAsFactors = FALSE))

     id Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1   0.1          5.1         3.5          1.4         0.2  setosa
2   0.1          4.9         3.0          1.4         0.2  setosa
3   0.1          4.7         3.2          1.3         0.2  setosa
4   0.1          4.6         3.1          1.5         0.2  setosa
5   0.1          5.0         3.6          1.4         0.2  setosa
6  18.1          5.1         3.5          1.4         0.2  setosa
7  18.1          4.9         3.0          1.4         0.2  setosa
8  18.1          4.7         3.2          1.3         0.2  setosa
9  18.1          4.6         3.1          1.5         0.2  setosa
10 18.1          5.0         3.6          1.4         0.2  setosa
11 18.2          5.1         3.5          1.4         0.2  setosa
12 18.2          4.9         3.0          1.4         0.2  setosa
13 18.2          4.7         3.2          1.3         0.2  setosa
14 18.2          4.6         3.1          1.5         0.2  setosa
15 18.2          5.0         3.6          1.4         0.2  setosa
...