我试图在R中得到两个“大矩阵”的叉积。不幸的是,这里不能公开数据,但尺寸是177304*23和23*177304,所以结果应该有尺寸177304* 177304。
由于我的 RAM 为 8 GB,因此我一直使用 FBM 类将矩阵存储在磁盘存储空间中。但是当我使用函数 big_cprodMat 来查找叉积时,它似乎首先使用矩阵类对象作为输出来解决产品,而 R 却崩溃了。
我能做些什么来避免这种情况吗?
我是该网站的新手,非常感谢任何人可以提供的任何帮助。
使用一个较小的示例:
N <- 17e3
M <- 23
A <- matrix(rnorm(N * M), N, M)
B <- matrix(rnorm(N * M), M, N)
您可以按块填充生成的矩阵(请注意,对于您要求的大小,磁盘将占用 234 GB):
library(bigstatsr)
AB <- FBM(N, N, backingfile = "test")$save()
big_apply(AB, a.FUN = function(X, ind) {
X[, ind] <- A %*% B[, ind]
NULL
}, block.size = 1e3)
不要犹豫,在 {bigstatsr} 的 GitHub 存储库上打开一个问题。