我有一个非常大的矩阵,我想创建一个矩阵列表,将大矩阵的每个列向量转换为具有(相同)指定维度的矩阵(当然与向量长度兼容)。
目前我没有发现任何比使用 apply() 更快的方法。 由于我必须执行数百次,因此我需要加快这段代码的速度。
library(Rfast)
bigmat <- matrnorm(25200, 9000)
iwant <- apply(bigmat,2,function(x) matrix(x,ncol=9), simplify=FALSE)
length(iwant)
lapply(iwant, dim)
你有什么建议吗?
最佳答案
也许数组比矩阵列表更舒服。那么这应该快 5 倍以上:
bigarray <- array(bigmat, dim=c(2800,9,9000))
您可以通过索引第三维来浏览所需的矩阵:
bigarray[,,14]
如果确实需要,您可以将其转换为列表:
biglist <- asplit(bigarray, 3)
关于r - 加速创建矩阵列表,每个矩阵都具有来自非常大矩阵的每一列的指定维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76043497/