R 将嵌套列表转换为单个数据帧或TIBLE
我有一个非常大的嵌套列表,我想把它做成一个平面数据框。我为列表的前两个元素创建了一个dput以快速复制/粘贴(很抱歉,在创建df后,我可以清理很多nonesense),我尝试了以下类似的问题,即关于将列表转换为df的问题,但由于某些原因,似乎没有一个与我的兼容 谢谢大家! 以下是前两个元素的dput-完整列表有数千个元素:R 将嵌套列表转换为单个数据帧或TIBLE,r,nested-lists,purrr,R,Nested Lists,Purrr,我有一个非常大的嵌套列表,我想把它做成一个平面数据框。我为列表的前两个元素创建了一个dput以快速复制/粘贴(很抱歉,在创建df后,我可以清理很多nonesense),我尝试了以下类似的问题,即关于将列表转换为df的问题,但由于某些原因,似乎没有一个与我的兼容 谢谢大家! 以下是前两个元素的dput-完整列表有数千个元素: list(structure(list(first = structure(list(text = c("\n\tMenghe a'Nyam\n\t\n\n \n\n \
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")))
要在一个数据帧中获取数据,可以使用:
newdata <- do.call(rbind, lapply(data, function(x) do.call(cbind, x)))
我们可以只做
bind_行
library(dplyr)
data %>% bind_rows
优雅的解决方案!非常感谢。它工作得很好。你能帮我解释一下map_df和map_dfr的区别吗?还有,do.call,这个函数到底在做什么?大多数情况下,它们的工作原理完全相同,因此在本例中,您也可以使用
map\u dfr
do.call
在数据帧列表上应用函数(cbind
),并将它们组合成一个数据帧。谢谢。我将对这些电话进行一些研究,以便将其添加到我的学习中@RonakShah我非常感谢你!
library(dplyr)
data %>% bind_rows