将大型列表转换为data.frame

时间:2013-08-16 12:43:28

标签: r performance memory-management dataframe

我正在尝试将13,000个元素的列表转换为数据帧,每个元素都是zoo对象,其中nr = 230,ncol = 4。

我尝试了setattr(mylist, 'class', 'data.frame'),但却产生了大量的助推器。 我还尝试了quickdf(mylist)包中的plyr函数,但这也无效。

do.call(rbind.data.frame, mylist)类型的方法非常慢,因此在这种情况下不是一个选项。

有关将此类列表转换为数据帧的最有效方法的建议吗?

2 个答案:

答案 0 :(得分:8)

使用data.table包中的rbindlist。

data <- matrix(data = 1, nrow = 230, ncol = 4)
lstData <- rep(list(data), 16000)

library(data.table)
lstData <- Map(as.data.frame, lstData)
dfrData <- rbindlist(lstData)


system.time(dfrData <- rbindlist(lstData))
user  system elapsed 
0.12    0.03    0.15 

答案 1 :(得分:0)

我不确定这是否有效,但您可以尝试

library(plyr)
ldply(mylist)