List rbind列表中的数据帧

List rbind列表中的数据帧,list,r,dataframe,List,R,Dataframe,我有一个如下列表:x[[state][[year]]。其中的每个元素都是一个数据帧,单独访问它们不是问题 但是,我想在多个列表中重新绑定数据帧。更具体地说,我希望输出的数据帧和我的年数一样多,也就是说,在每年的数据帧中,所有的状态数据帧都被rbind。换句话说,我希望每年将我所有的州数据合并到单独的数据框架中 我知道我可以使用do.call(“rbind”,list)将单个列表组合成一个数据帧。但我不知道如何跨列表列表执行此操作。您可以按照以下方式执行操作(我无法测试,因为我没有这样的结构):

我有一个如下列表:
x[[state][[year]]
。其中的每个元素都是一个数据帧,单独访问它们不是问题

但是,我想在多个列表中重新绑定数据帧。更具体地说,我希望输出的数据帧和我的年数一样多,也就是说,在每年的数据帧中,所有的状态数据帧都被rbind。换句话说,我希望每年将我所有的州数据合并到单独的数据框架中


我知道我可以使用
do.call(“rbind”,list)
将单个列表组合成一个数据帧。但我不知道如何跨列表列表执行此操作。

您可以按照以下方式执行操作(我无法测试,因为我没有这样的结构):


extract.year首先将其折叠成一个列表:

list <- unlist(listoflists, recursive = FALSE)
df <- do.call("rbind", list)

list出于好奇,你为什么要用这种方式处理数据,而不是用一个大数据框来处理所有数据?谢谢你的及时帮助!但这并不是我想要的。您的回答为我提供了列表列表中所有数据帧的单个数据帧(使用unlist,这是一个我从来不知道的很酷的命令)。但是我想要一个32个rbind’ed数据帧的列表,这些数据帧和我拥有的时间一样长,它们将所有的州结合在一起。你的答案的第一行给了我一个大致为州*年的列表(尽管出于某种原因,我得到的长度是1584,而不是我预期的32*50=1600)。所以我想这是一个线索…经过更多的实验,我想我会有所进展。我第一次命名了state列表的元素,因此现在未列出列表的元素(在Hadley的第一个命令之后)现在有了有用的名称,如“AL3”和“TX4”。现在我必须把所有的3和4结合在一起,等等。哦,天哪,我想正则表达式是答案的一部分。我试着用grep(“1$”,names(list))来获取以“1”命名的列表,但这让我多年来一直以1命名,比如11、21、31。我尝试了grep(“\D1$”,names(list)),但没有成功。您可以尝试使用重塑包中的
melt
——它将添加变量,使事情变得更简单。如果您只有一个数据帧,请使用
split
将其拆分为所需的部分。上面的答案让事情变得复杂,因此我尝试了您的方法,效果很好!稍加修改。第一行返回了我正在寻找的数据帧。第二行不行,所以我转而看哈德利的plyr软件包。这个命令在第一行之后返回一个rbinded数据帧列表:llply(my.list.of.years,function(my.year)do.call(rbind,extract.year(my.year)))太棒了,谢谢大家的帮助!ldply()甚至更快、更高效!
list <- unlist(listoflists, recursive = FALSE)
df <- do.call("rbind", list)