r - 分配一个大矩阵

标签 r ehcache-bigmemory

我正在使用bigmemory包。我想计算w。我的v长度是478000,k长度是240500。两个矩阵相乘w非常大。

我通过循环运行代码,但它仍在运行并且尚未完成,我不知道是否会给我结果。

我尝试在没有 for 循环的情况下计算它,但我得到了错误。请帮助纠正我的代码以使其更快。

v <-read.big.matrix('v.dat',type='double')
k <-read.big.matrix('k.dat',type='double')
m=length(v);
n=length(k);
for(i in 1:m)
{
    for(j in 1:n)
    {
       w[i,j] = 2 * cos(dt * v[i] * k[j]) - 2
    }
}

我如何在循环之前定义 w,因为 w 的大小非常大,我不能像 w <- matrix(nr,ncol) 那样做.

最佳答案

预分配矩阵可以这样完成:

m = matrix(rep(0, number_or_rows*number_of_columns), 
     number_of_rows, number_of_columns))

这将创建一个矩阵,其中的行数和列数在变量 number_of_rowsnumber_of_columns 中定义,最初全部填充为 0。

可能出现的问题是,由于 w 的大小与 vk 相同,因此您很可能会运行填充w时出现内存问题。您还可以通过使用 wbigmemory 矩阵或分块运行分析来解决此问题。

关于r - 分配一个大矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14400340/

相关文章:

r - 如何从 R 中的栅格中提取值

r - 移动表格中的位置 - R

java - 如何同步EhCache中多个线程的 Action ?

java - Ehcache,可快速重启并溢出到磁盘

r - x[[method]](...) : attempt to apply non-function in testthat test when sourcing file 中的错误

在 R 中重新排列数据框

java - 如何在Ehcache中存储嵌套的Map结构?

.net - .net 是否有类似 BigMemory 的系统

r - `geom_smooth` 公式中有变次多项式