经过几个小时的阅读后,我发现在R中处理大(非常大的矩阵)的最佳方法是使用bigalgebra
我想存储一个大的80,000 x 80,000 0的矩阵,它不适合RAM,然后用大矩阵乘法的结果替换它的单元格。
我有这个错误
Error in CreateFileBackedBigMatrix(as.character(backingfile), as.character(backingpath)
Problem creating filebacked matrix.
完成后
my_matrix <- filebacked.big.matrix(ncol = ncol(Xt), nrow = nrow(X),
type = "double", backingpath = getwd(),
descriptorfile = "X.bin.desc", backingfile = "X.bin")
这是我的数据的可重现的类似案例
X <- matrix(rexp(200, rate=.1), ncol = 11, nrow = 80000)
Xt <- t(X)
所以我的完整部分是
library(bigalgebra)
X <- matrix(rexp(200, rate=.1), ncol = 11, nrow = 80000)
Xt <- t(X)
my_matrix <- filebacked.big.matrix(ncol = ncol(Xt), nrow = nrow(X),
type = "double", backingpath = getwd(),
descriptorfile = "X.bin.desc", backingfile = "X.bin")
但是如果我运行它(在我的情况下没用)
my_matrix <- filebacked.big.matrix(ncol = ncol(X), nrow = nrow(Xt),
type = "double", backingpath = getwd(),
descriptorfile = "X.bin.desc", backingfile = "X.bin")
它在没有警告的情况下运行并存储一个小的11 x 11矩阵。
我正在使用带有12 GB RAM的OS El Capitan,我知道$ X ^ t * X $需要~47 GB的RAM来计算,这就是我使用bigalgebra
存储的原因在硬盘中。
答案 0 :(得分:1)
检查可用的硬盘空间,因为您发出的错误信号可能是由于硬盘空间不足而无法写下filebacked.big.matrix所需的后备文件。我有同样的错误,我通过将外部硬盘指示为“后路”来解决它。