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)
解决这个问题的天真方法是使用rbind和as.data.frame,但我们甚至无法超越这rbind一步:
>Data <- do.call(rbind,vectorList)
Error: cannot allocate vector of size 572.2 Mb
Run Code Online (Sandbox Code Playgroud)
这样做效率更高?
它可能是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)