首页 > 解决方案 > 如何将嵌套的数据框列表转换为数据框?

问题描述

我有一个包含嵌套数据框列表的列表。我的数据结构如下:

在此处输入图像描述

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

先感谢您!

标签: rdataframedata-manipulationnested-lists

解决方案


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

推荐阅读