【发布时间】:2018-01-27 20:45:48
【问题描述】:
我使用 Rcpp(尤其是 Rcpp Armadillo)执行一个方法,该方法返回几个大矩阵作为结果,例如大小为 10000*10000。如何保存这些矩阵以在 R 环境中使用它们。假设我在 Rcpp 中的代码如下所示:
list Output (20000);
for( int i(0);i<20000;++1 ){
...
...
// Suppose that the previous lines allow me to compute a matrix Gi of size 10000*10000
Output(i)=Gi;
}
return Output;
我编程的方式成本很高,需要足够的内存。但我需要 20000 矩阵来计算 R 环境中的估计器。如何保存矩阵?不知道bigmatrix包能不能帮到我。
最好的,
【问题讨论】:
-
i) 我们拼写为 Rcpp。 ii) 10000 * 10000 * 8 字节 = 800 mb。规模大但并非不可逾越。你试过什么?
-
您好,Dirk,感谢您的回复。事实上,我想使用矩阵来构建一个将在数值上最大化的函数。所以我试图将计算 Gi 矩阵的代码放在我想要最大化的函数中。但随之而来的是,对于最大搜索的每次迭代,将计算 20000 Gi。这种方式使用最少的内存,但计算永远不会找到最大值。太长了。
-
所以,如果我理解正确的话,在每次迭代中,你计算一个 10000 * 10000 矩阵并且有 20000 次迭代,以便计算一个 20000 * 10000 * 10000 个元素的数组?如果是这种情况,则意味着您要存储 15 TB 的数据,因此您需要更改算法。你不能只使用每个 Gi 的摘要吗?
-
嗨@F.Prive 谢谢你的回复。我在数学论坛上发布了这个问题。你可以得到它here非常感谢你
-
似乎总和的每个元素都独立于其他元素,因此您不必一次计算所有 Gi,而一次只计算一个。我说的对吗?
标签: matrix rcpp armadillo r-bigmemory