Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何更有效地将庞大的向量列表转换为矩阵?_R_List_Matrix_Performance - Fatal编程技术网

R 如何更有效地将庞大的向量列表转换为矩阵?

R 如何更有效地将庞大的向量列表转换为矩阵?,r,list,matrix,performance,R,List,Matrix,Performance,我有一个长度为130000的列表,其中每个元素都是长度为110的字符向量。我想将此列表转换为维度为143000*10的矩阵。我怎样才能更有效地完成它\ 我的代码是: output=NULL for(i in 1:length(z)) { output=rbind(output, matrix(z[[i]],ncol=10,byrow=TRUE)) } 这将有助于获得有关输出的示例信息。不建议在越来越大的事情上递归使用rbind。我的第一个猜测对你有帮助: z &l

我有一个长度为130000的列表,其中每个元素都是长度为110的字符向量。我想将此列表转换为维度为143000*10的矩阵。我怎样才能更有效地完成它\ 我的代码是:

output=NULL
for(i in 1:length(z)) {
 output=rbind(output,
              matrix(z[[i]],ncol=10,byrow=TRUE))
}

这将有助于获得有关输出的示例信息。不建议在越来越大的事情上递归使用
rbind
。我的第一个猜测对你有帮助:

z <- list(1:3,4:6,7:9)
do.call(rbind,z)
z我想你想要


如果这个比例适当(即,您没有遇到内存问题),那么在一台类似的机器上(我在一台2岁的MacBook Pro上这样做),完整的问题将需要大约130*0.2秒=26秒。

这应该相当于您当前的代码,只是要快得多:

output <- matrix(unlist(z), ncol = 10, byrow = TRUE)

输出您可以使用as.matrix,如下所示:

output <- as.matrix(z)
输出您也可以使用

output <- as.matrix(as.data.frame(z))

output如果您希望维度为143000*11,为什么要将ncol设置为10?等等-当您说每个条目有11个字符时,您的意思是它是一个包含11个项目的向量?我原本以为每个都是一个包含11个字符的字符串。你能给我举个例子吗?谢谢Dason和David!那是个打字错误。我已经改正了。@user1787675:我还是不明白。什么是“条目”?它是矢量吗?你能给我看一下
z[1:2]
?你好,大卫,我查了字典,发现我指的是列表中的组件。我为我造成的混乱感到抱歉。我不擅长英语:)宾果。这应该比我的解决方案快得多,但我想得不够快。+1,但我建议在
unlist
中设置
USE.NAMES=FALSE
,以节省时间和内存。它应该是
USE.NAMES
(即小写)。为了澄清,它应该是
output@mikey。它应该是:输出是神奇的!在我用了一年的东芝机器上这样做大约需要20秒,这为我节省了很多时间。而且,显示运行时间的函数也非常有趣。
output <- as.matrix(z)
output <- as.matrix(as.data.frame(z))
output <- matrix(unlist(z), ncol = 10, byrow = TRUE)