如何将嵌套的数据帧列表转换为数据帧?

问题描述 投票:-1回答:1

我有一个列表与嵌套的数据帧列表。我的数据结构如下:

enter image description here

如何将嵌套列表的所有数据帧合并为一个数据帧?在这个例子中,我想要将4个数据帧合并(rbind)为一个!对于此示例,请认为初始列表的长度为3而不是58。

先感谢您!

r dataframe data-manipulation nested-lists
1个回答
1
投票

首先,在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')

另一个更多保存选项是使用unlistpurrr::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
© www.soinside.com 2019 - 2024. All rights reserved.