我想将两个大矩阵相乘,然后将列函数应用于所得矩阵。鉴于我没有足够的内存来分配这些对象,我尝试了bigalgebra
包,该包允许计算一些矩阵运算,但此处没有所需的运算。
我的脚本如下:
library(bigalgebra)
X <- as.big.matrix( matrix(rnorm(265225*360), nrow = 265225, ncol = 360) )
Y <- as.big.matrix( matrix(rnorm(360*10000), nrow = 360, ncol = 265225) )
Z <- X %*% Y # Z is a big.matrix object
apply(Z, 2, function(x) sqrt(sum(x^2)))
# > Error: in as.vector(data) : no method for coercing this s4 to class to a vector
apply(as.matrix(Z), 2, function(x) sqrt(sum(x^2)))
# > Error: cannot allocate vector of size 19.5 Gb
如何处理该对象?而且,有没有更好的方法/更快地达到相同的结果?