Я пытаюсь перевести цикл for в цикл foreach, чтобы иметь возможность запускать эту функцию параллельно с допаром. Однако значения в цикле не сохраняются, поэтому я получаю 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]}
и это выводит NA для всех i> 2.
Я хотел бы знать, как я могу запустить более поздний код, чтобы он выводил тот же результат, что и в цикле for.
Этот вопрос отличается от предыдущего, который был помечен как «дубликат», потому что я постепенно строю матрицу, используя значения, сгенерированные в цикле, то есть A2[,i]<-A1[,i]*A2[,i-1]
, а не просто A2[,i]<-i+1
.