使用dopar迭代运行foreach

时间:2019-07-11 12:39:58

标签: r foreach parallel-processing

我试图将“ 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来逐步构建矩阵。

0 个答案:

没有答案