Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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_Performance_Computational Finance - Fatal编程技术网

R计算成本和向量长度

R计算成本和向量长度,r,performance,computational-finance,R,Performance,Computational Finance,我试图用R生成MCMC的样本,我发现了一个有趣的点 在每个第i步中,我添加新样本如下 for(i in 1: M){ newsample=generate_sample(y.vec[i]); y.vec[i+1]=newsample; } 因此,我可以生成M(10^8)的长度,但这需要很多时间,比如说3天 无意中,我将其更改为double for loop语句 for(j in 1: K){ for(i in 1: L){ newsample=generate_sample(y.v

我试图用R生成MCMC的样本,我发现了一个有趣的点

在每个第i步中,我添加新样本如下

for(i in 1: M){
newsample=generate_sample(y.vec[i]);
y.vec[i+1]=newsample;
}
因此,我可以生成M(10^8)的长度,但这需要很多时间,比如说3天

无意中,我将其更改为double for loop语句

for(j in 1: K){
   for(i in 1: L){
   newsample=generate_sample(y.vec[i]);
   y.vec[i+1]=newsample;
   }
y.vec.total=c(y.vec.total,y.vec);
}
我原以为第二个代码效率很低,但只需1小时即可生成K*L=(10000*10000)个样本

当处理长度相对较长的向量时,计算成本似乎呈指数增长


我说的对吗?

您是否预先声明了
y.vec
y.vec.total
并在其上运行循环?换句话说,如果在每次迭代中都要向元素添加元素,则需要很长时间,但如果只更新元素,则速度应该会快得多。请参阅Patrick Burns的R inferno。生成样本的许多方法都是矢量化的,例如,您不需要单独使用函数为每个值生成数字,但同时对所有的价值观。例如,你将用“形式(10)”代替“形式(1:10中的i)”u[i]