rbind列表中的数据帧

bsh*_*hor 23 r list dataframe

我有一个列表,看起来像这样:x[[state]][[year]].这个元素的每个元素都是一个数据框,单独访问它们不是问题.

但是,我想在多个列表中绑定数据帧.更具体地说,我想拥有与我多年一样多的数据帧输出,即每年所有状态数据帧的rbind.换句话说,我想将我所有的状态数据逐年合并到不同的数据框中.

我知道我可以将单个列表组合到一个数据框中do.call("rbind",list).但是我不知道如何在列表列表中这样做.

had*_*ley 39

首先将其折叠到列表中:

list <- unlist(listoflists, recursive = FALSE)
df <- do.call("rbind", list)
Run Code Online (Sandbox Code Playgroud)


dat*_*com 10

你可以沿着以下几行做一些事情(我无法测试,因为我没有这样的结构):

extract.year <- function(my.year) lapply(x, function(y) y[[my.year]])

x.by.year <- sapply(my.list.of.years, function(my.year)
    do.call(rbind, extract.year(my.year)))   
Run Code Online (Sandbox Code Playgroud)

函数抽取年创建一个列表,其中仅包含给定年份的数据框.然后你回复他们......

  • 上面的答案变得越来越复杂,所以我尝试了你的方法,这是有效的!稍作修改.第一行返回了我正在寻找的数据帧.第二行不起作用,所以我转向Hadley的plyr包.这个命令在你的第一行之后完美地返回一个rbinded数据帧列表:llply(my.list.of.years,function(my.year)do.call(rbind,extract.year(my.year)))真棒,谢谢你们帮助! (2认同)