更好地连接嵌套在R中的列表中的数据帧的方法

时间:2012-09-20 17:08:47

标签: r list data-manipulation

我有一个包含嵌套列表的列表对象,每个列表都包含一个数据框。下面的代码模拟了我的数据结构:

## simulate my data structure -- list of data frames
mylist <- list()
for (i in 1:5) {
 tmp <- list(data = data.frame(x=sample(1:5, replace=T), y=sample(6:10, replace=T)))
 mylist <- c(mylist, tmp)
}

我希望对所有数据帧进行行绑定,以便创建一个主数据帧。目前,我使用for循环来完成此操作:

## goal: better way to combine row bind data frames
## I like rbind.fill because sometimes my data are not as clean as desired
library(plyr)
df <- data.frame(stringsAsFactors=F)
for (i in 1:length(mylist)) {
 tmp <- mylist[i]$data
 df <- rbind.fill(df, tmp)
}

实际上,我的主列表非常大 - 长度为3700,而不是5 - 所以我的for循环非常慢。

是否有更快的方法来完成相同的任务?

1 个答案:

答案 0 :(得分:2)

ldply(mylist, data.frame)

# if you dont need the id column, 

ldply(mylist, data.frame)[,-1]

# If you want a progress bar for the larger operation, add .progress
ldply(mylist, data.frame, .progress = 'text')

# See ?create_progress_bar for more options.