This question涵盖了我有列列表的情况,我希望将它们转换为data.frame。如果我有一个行列表,并希望将它们转换为data.frame,该怎么办?
rowList <- lapply(1:500000,function(x) sample(0:1,300,x))
解决此问题的天真方法是使用rbind
和as.data.frame
,但我们甚至无法超越rbind
步骤:
>Data <- do.call(rbind,vectorList)
Error: cannot allocate vector of size 572.2 Mb
这样做效率更高?
答案 0 :(得分:5)
unlist
列表可能是最快/最有效的,并填充矩阵:
> m <- matrix(unlist(vectorList), ncol=300, nrow=length(vectorList), byrow=TRUE)
但是你需要~6GB的RAM才能用整数向量和~12GB的RAM来完成数字向量。
> l <- integer(5e6*300)
> print(object.size(l),units="Gb")
5.6 Gb
答案 1 :(得分:1)
依靠R数组的主要方面,尝试直接强制转换为矩阵:
Data <- matrix(unlist(vectorList), ncol = length(vectorList[[1]]), byrow = TRUE)
如果这也不起作用,你没有资源来复制这个东西,所以考虑首先创建矩阵并逐列填充它。