R 每行中有另一个矩阵的矩阵

R 每行中有另一个矩阵的矩阵,r,R,我希望提高下面代码的性能。我的想法是试图通过使st2的每一列都有自己的矩阵来“矢量化”这个操作,这就是数据帧能为我做的吗 st<-matrix(nrow=257,ncol=10000) st2<-matrix(nrow=257,ncol=10000) st[1,]=1489 for(i in 1:10000) { st2[1,]<-st[(256+1),1] for(j in 2:(256+1)) { st2[j,]=st2[(j-1),] *exp(.5-

我希望提高下面代码的性能。我的想法是试图通过使st2的每一列都有自己的矩阵来“矢量化”这个操作,这就是数据帧能为我做的吗

st<-matrix(nrow=257,ncol=10000)
st2<-matrix(nrow=257,ncol=10000)
st[1,]=1489
for(i in 1:10000)
{
  st2[1,]<-st[(256+1),1]
  for(j in 2:(256+1))
  {
    st2[j,]=st2[(j-1),] *exp(.5-(.2^2/2)) * rnorm(10000)
  }
  print(st2[256+1,]) #this for example, in reality I store these values for later
}

st我不知道该如何在该赊账的地方赊账,但@DWin在钱的问题上是对的……复制是解决办法。

是你的等式
…*exp(.5-(.2…)
应该是一个常数吗?如果是这样的话,请将其移到循环之外……而且我没有看到您在计算中的任何地方使用
I
。我在该循环内没有看到任何“I”索引,因此
replicate
可能更快。对于exp(epression),您可以计算一个rnorm()调用,然后使用“^(1:nrow(st))处理累积产品。应为“矢量化”,那么为什么不做一个更小的例子,比如说小5*1000倍,这样我们就有了更合理的选择?
replicate
可能是解决这个问题的方法。我不太关心内部循环的性能,因为这已经证明是相当快的。不过感谢你的提示。至于让每一列都有自己的矩阵,你可能与数据帧相比,最好查看列表或更高维度的矩阵。