bigmatrix:CreateFileBackedBigMatrix中的错误(as.character(backingfile),as.character(backingpath)

时间:2016-11-18 20:30:28

标签: r matrix

经过几个小时的阅读后,我发现在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存储的原因在硬盘中。

1 个答案:

答案 0 :(得分:1)

检查可用的硬盘空间,因为您发出的错误信号可能是由于硬盘空间不足而无法写下filebacked.big.matrix所需的后备文件。我有同样的错误,我通过将外部硬盘指示为“后路”来解决它。