R не может найти функцию %do%

Я пытаюсь научиться использовать параллельные циклы foreach в R:

Я попытался запустить следующий код:

testParForEach<-function(){

#testing a parallel for each loop

#to parallelize loop:
library(foreach)
library(doSNOW)
cl<-makeCluster(2)
registerDoSNOW(cl)

resultdf <- foreach(i=1:8, .combine='rbind') %dopar% {
 foreach(j=1:2, .combine='c') %do% {
  l <- runif(1, i, 100)
  i + j + l  
 }
}



return(resultdf)

#close cluster
stopCluster(cl)


 }

(который я получил из другого поста на Stackoverflow), но получаю сообщение об ошибке:

Ошибка в {: задача 1 не удалась - "коннте функция "%до%" не найдена"

что означает «не удалось найти функцию %do%». Кто-нибудь видел эту ошибку раньше?


person user3396088    schedule 08.03.2014    source источник


Ответы (1)


Это потому, что %do% определен в пакете foreach. Внешнее распараллеливание через foreach запускает отдельные процессы R (в вашем случае 2), которые независимо выполняют код, подлежащий распараллеливанию. Но в этих процессах пакет foreach не загружается. Это делается с помощью .packages-параметра foreach-функции.

Пример вы можете найти здесь.

person Raffael    schedule 08.03.2014