当列表是行列表时,最有效的列表到data.frame方法

Zac*_*ach 3 memory-management r data-management

这个问题涵盖了我有一个列列表的情况,我希望将它们变成一个data.frame.如果我有一个行列表,并希望将它们转换为data.frame,该怎么办?

rowList <- lapply(1:500000,function(x) sample(0:1,300,x))
Run Code Online (Sandbox Code Playgroud)

解决这个问题的天真方法是使用rbindas.data.frame,但我们甚至无法超越这rbind一步:

>Data <- do.call(rbind,vectorList)
Error: cannot allocate vector of size 572.2 Mb
Run Code Online (Sandbox Code Playgroud)

这样做效率更高?

Jos*_*ich 5

它可能是unlist您的列表中最快/最有效的并填充矩阵:

> m <- matrix(unlist(vectorList), ncol=300, nrow=length(vectorList), byrow=TRUE)
Run Code Online (Sandbox Code Playgroud)

但是你需要~6GB的RAM才能使用整数向量和~12GB的RAM来完成数字向量.

> l <- integer(5e6*300)
> print(object.size(l),units="Gb")
5.6 Gb
Run Code Online (Sandbox Code Playgroud)