26

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

但是,我想跨多个列表 rbind 数据帧。更具体地说,我希望输出与多年来一样多的数据帧,即 rbind 每年内的所有状态数据帧。换句话说,我想将我所有的州数据逐年合并到单独的数据框中。

我知道我可以将单个列表与do.call("rbind",list). 但我不知道如何在列表列表中做到这一点。

4

2 回答 2

46

先把它折叠成一个列表:

list <- unlist(listoflists, recursive = FALSE)
df <- do.call("rbind", list)
于 2009-10-31T01:24:16.450 回答
11

您可以按照以下方式做一些事情(我无法测试,因为我没有这样的结构):

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)))   

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

于 2009-10-30T22:52:45.253 回答