Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 分配一个大矩阵_R_Ehcache Bigmemory - Fatal编程技术网

R 分配一个大矩阵

R 分配一个大矩阵,r,ehcache-bigmemory,R,Ehcache Bigmemory,我正在使用bigmemory软件包。我想计算w。我的v型长度是478000,k型长度是240500。两个矩阵的乘法非常大 我按循环运行代码,但它仍在运行,尚未完成,我不知道是否会给出结果 我试图在没有for循环的情况下计算它,但是我得到了一个错误。请提供任何帮助来更正我的代码,使之快速 v <-read.big.matrix('v.dat',type='double') k <-read.big.matrix('k.dat',type='double') m=length(v); n

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

我按循环运行代码,但它仍在运行,尚未完成,我不知道是否会给出结果

我试图在没有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
    }
}

v预分配矩阵可以这样做:

m = matrix(rep(0, number_or_rows*number_of_columns), 
     number_of_rows, number_of_columns))
这将创建一个矩阵,其中包含在变量
行数\u
列数\u
中定义的行数和列数,最初填充为所有0


可能会出现的问题是,由于
w
的大小等于
v
k
,因此在填充
w
时,很可能会遇到内存问题。您也可以通过为
w
使用
bigmemory
矩阵,或分块运行分析来解决此问题。

预分配矩阵的方法如下:

m = matrix(rep(0, number_or_rows*number_of_columns), 
     number_of_rows, number_of_columns))
这将创建一个矩阵,其中包含在变量
行数\u
列数\u
中定义的行数和列数,最初填充为所有0


可能会出现的问题是,由于
w
的大小等于
v
k
,因此在填充
w
时,很可能会遇到内存问题。您也可以通过为
w
使用
bigmemory
矩阵或分块运行分析来解决此问题。

我将使用R矢量化功能执行类似操作:

for(i in 1:m)
{
  w[i] = 2 * cos(dt * v[i] * k) - 2 # I compute n terms here
}

我将使用R矢量化功能执行类似的操作:

for(i in 1:m)
{
  w[i] = 2 * cos(dt * v[i] * k) - 2 # I compute n terms here
}

agstudy是正确的,但是您可以在这里使用
outer
,如下所示


wagstudy在正确的轨道上,但是您可以在这里使用
outer
,如下所示


w您需要使用“big.matrix”类构造函数,而且由于您明显超过了RAM资源,因此有必要将其定义为“filebacked.big.matrix”


您需要使用“big.matrix”类构造函数,而且由于您显然超过了RAM资源,因此有必要将其定义为“filebacked.big.matrix”


w应为478000 x 240500。我如何分配1TB?关于分配的元素太多,我有错误?EW应为478000 x 240500。我如何分配1TB?关于分配的元素太多,我有错误allocate@agstudy我刚试过,效果很好。请参阅编辑。+1是,它可以工作。。出于某些原因,我用2个矩阵而不是向量测试了你的代码。但我这里的问题是,我不能将它定义为w@agstudy我刚试过,效果很好。请参阅编辑。+1是,它可以工作。。由于某些原因,我用2个矩阵而不是向量测试了你的代码。但是我这里的问题是,我不能定义它,因为我必须定义w。我得到了这个错误消息:找不到对象“w”。这里应该是478000乘240500。我的问题在内存中,我必须定义w。我收到了此错误消息,未找到对象“w”。这里应该是478000乘240500。我的问题是记忆我做了,但这里的循环不想停止,代码从一周前一直运行到现在,没有得到任何结果。是“它”吗?你是说你看了帮助页面还是说你执行了类似的代码?用一个填充虚拟内存的常规矩阵是不会成功的。你有没有考虑过这对你的计算机来说太大的可能性?我的意思是我试着为大矩阵运行这段代码,但它对我不起作用我不知道问题出在哪里:library('bigmemory')library('irlba'))我这样做了,但是这里的循环不想停止,代码从一周前一直运行到现在,没有得到任何结果。是“它”吗?你是说你看了帮助页面还是说你执行了类似的代码?用一个填充虚拟内存的常规矩阵是不会成功的。你有没有考虑过这对你的电脑来说太大的可能性?我的意思是我试着为大矩阵运行这段代码,但它对我不起作用我不知道问题出在哪里:library('bigmemory')library('irlba')v
 help(big.matrix, package=bigmemory)