首页 > 解决方案 > 将嵌套列表转换为单个数据框或小标题

问题描述

我有一个非常大的嵌套列表,我想制作一个平面数据框。我创建了列表前两个元素的 dput 以快速复制/粘贴(抱歉,在创建 df 后我可以清理很多废话)我尝试遵循类似的关于将列表转换为 df 但似乎没有兼容的问题出于某种原因与我的。

谢谢!

这是前两个元素的 dput - 完整列表有数千个:

list(structure(list(first = structure(list(text = c("\n\tMenghe a'Nyam\n\t\n\n  \n\n  \n\n  \n\n  \n          
Position:\n  \n  Forward\n\n\n\n  6-5, 215lb (196cm, 97kg) \n  \n\n  \n\n  \n  \n  \n\n  School:     
Canisius\n\n\n\n\n\n  More player info\n\n\n\n\n\n"  , 
"\n\tMenghe a'Nyam\n\t\n\n  \n\n  \n\n  \n\n  \n  Position:\n  \n  Forward\n\n\n\n  6-5, 215lb 
(196cm, 97kg) \n  \n\n  \n\n  \n  \n  \n\n  School: Canisius\n\n\n\n\n\n  More player 
info\n\n\n\n\n\n"  , 
"\n\tMenghe a'Nyam\n\t\n\n  \n\n  \n\n  \n\n  \n  Position:\n  \n  Forward\n\n\n\n  6-5, 215lb 
(196cm, 97kg) \n  \n\n  \n\n  \n  \n  \n\n  School: Canisius\n\n\n\n\n\n  More player 
info\n\n\n\n\n\n"  
)), row.names = c(NA, -3L), class = c("tbl_df", "tbl", "data.frame"
)), second = structure(list(Season = c("2006-07", "2007-08", 
"Career"), name = c("menghe-anyam", "menghe-anyam", "menghe-anyam"
)), row.names = c(NA, -3L), class = "data.frame")), row.names = c(NA, 
-3L), class = c("tbl_df", "tbl", "data.frame")), structure(list(
first = structure(list(text = c("\n\tJordan Aaberg\n\t\n\n  \n\n  \n\n  \n\n  \n  Position:\n  \n  
Forward\n\n\n\n  6-9, 225lb (206cm, 102kg) \n  \n\n  Hometown: Rothsay, MN\n\n\n\n  \n\n  High 
School: Rothsay\n\n\n\n  \n  \n  \n\n  School: North Dakota State\n\n\n\n\n\n  More player 
info\n\n\n\n\n\n"  , 
"\n\tJordan Aaberg\n\t\n\n  \n\n  \n\n  \n\n  \n  Position:\n  \n  Forward\n\n\n\n  6-9, 225lb 
(206cm, 102kg) \n  \n\n  Hometown: Rothsay, MN\n\n\n\n  \n\n  High School: Rothsay\n\n\n\n  \n  \n  
\n\n  School: North Dakota State\n\n\n\n\n\n  More player info\n\n\n\n\n\n"  , 
"\n\tJordan Aaberg\n\t\n\n  \n\n  \n\n  \n\n  \n  Position:\n  \n  Forward\n\n\n\n  6-9, 225lb 
(206cm, 102kg) \n  \n\n  Hometown: Rothsay, MN\n\n\n\n  \n\n  High School: Rothsay\n\n\n\n  \n  \n  
\n\n  School: North Dakota State\n\n\n\n\n\n  More player info\n\n\n\n\n\n"  , 
"\n\tJordan Aaberg\n\t\n\n  \n\n  \n\n  \n\n  \n  Position:\n  \n  Forward\n\n\n\n  6-9, 225lb 
(206cm, 102kg) \n  \n\n  Hometown: Rothsay, MN\n\n\n\n  \n\n  High School: Rothsay\n\n\n\n  \n  \n  
\n\n  School: North Dakota State\n\n\n\n\n\n  More player info\n\n\n\n\n\n"  , 
"\n\tJordan Aaberg\n\t\n\n  \n\n  \n\n  \n\n  \n  Position:\n  \n  Forward\n\n\n\n  6-9, 225lb 
(206cm, 102kg) \n  \n\n  Hometown: Rothsay, MN\n\n\n\n  \n\n  High School: Rothsay\n\n\n\n  \n  \n  
\n\n  School: North Dakota State\n\n\n\n\n\n  More player info\n\n\n\n\n\n"  
)), row.names = c(NA, -5L), class = c("tbl_df", "tbl", "data.frame"
)), second = structure(list(Season = c("2009-10", "2011-12", 
"2012-13", "2013-14", "Career"), name = c("jordan-aaberg", 
"jordan-aaberg", "jordan-aaberg", "jordan-aaberg", "jordan-aaberg"
)), row.names = c(NA, -5L), class = "data.frame")), row.names = c(NA, 
-5L), class = c("tbl_df", "tbl", "data.frame")))

标签: rnested-listspurrr

解决方案


要在一个数据框中获取数据,您可以使用:

newdata <- do.call(rbind, lapply(data, function(x) do.call(cbind, x)))

或使用purrr

newdata <- purrr::map_df(data, ~do.call(cbind, .x))

推荐阅读