0

我试图在R中得到两个“大矩阵”的叉积。不幸的是,这里不能公开数据,但尺寸是177304*23和23*177304,所以结果应该有尺寸177304* 177304。

由于我的 RAM 为 8 GB,因此我一直使用 FBM 类将矩阵存储在磁盘存储空间中。但是当我使用函数 big_cprodMat 来查找叉积时,它似乎首先使用矩阵类对象作为输出来解决产品,而 R 却崩溃了。

我能做些什么来避免这种情况吗?

我是该网站的新手,非常感谢任何人可以提供的任何帮助。

4

1 回答 1

0

使用一个较小的示例:

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 存储库上打开一个问题。

于 2019-07-24T16:14:28.643 回答