我试图将“ for”循环转换为“ foreach”循环,以便能够与dopar并行运行该功能。但是循环中的值没有存储,所以我得到了NA。
我初始化一个矩阵,并为其第一列提供一个值,如下所示:
N<-2
m<-2
t<-5
probas_no_choice<-matrix(0.9,N*m,t)
probas_no_choice2<-matrix(NA,N*m,t)
probas_no_choice2[,1]=probas_no_choice[,1]
然后我替换了
for (i in 2:t) {probas_no_choice2[,i]=probas_no_choice[,i]*probas_no_choice2[,i-1]}
与
foreach (i = 2:t) %do% {probas_no_choice2[,i]=probas_no_choice[,i]*probas_no_choice2[,i-1]}
这可行,但是比它慢。
然后我尝试了
foreach (i = 2:t, .combine=c) %dopar% {probas_no_choice2[,i]=probas_no_choice[,i]*probas_no_choice2[,i-1]}
,这将输出所有i> 2的NA。
我想知道如何运行后面的代码,以便输出与for循环相同的结果。
此问题与之前被标记为“重复”的问题不同,因为我通过使用循环中生成的值(即A2[,i]<-A1[,i]*A2[,i-1]
而不是简单地A2[,i]<-i+1
来逐步构建矩阵。