итеративный прогон foreach - PullRequest
2 голосов
/ 11 июля 2019

Я пытаюсь перевести цикл 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...