Сначала выполните цикл внутри 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