如何将嵌套数据框列表转换为数据框?
How to convert a list of nested lists of dataframes into a dataframe?
我有一个包含数据框嵌套列表的列表。我的数据结构如下:
如何将嵌套列表的所有数据框合并为一个数据框?在此示例中,我想要将 4 个数据帧合并(rbind)为一个!对于此示例,认为初始列表的长度为 3 而不是 58。
提前致谢!
首先,在 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
我有一个包含数据框嵌套列表的列表。我的数据结构如下:
如何将嵌套列表的所有数据框合并为一个数据框?在此示例中,我想要将 4 个数据帧合并(rbind)为一个!对于此示例,认为初始列表的长度为 3 而不是 58。
提前致谢!
首先,在 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