Как указать расположение пакетов R в foreach (..., .packages = "pkg")% dopar% - PullRequest
2 голосов
/ 20 июня 2011

Мой "pkg" был установлен где-то еще, как я могу сказать foreach, где найти пакет?

foreach(i = 1:2,.packages="pkg") %dopar% { ... }

Это выдает мне сообщение об ошибке:

worker initialization failed: there is no package called 'pkg'

Спасибо заваша помощь.

Ответы [ 3 ]

3 голосов
/ 30 июня 2016

Другим подходом будет распространение .libPaths среди всех работников, прежде чем вы позвоните foreach:

library(foreach)
library(doParallel)

#setup parallel backend to use 8 processors
cl<-makeCluster(8)
registerDoParallel(cl)

# pass libPath to workers, NOTE THIS LINE
clusterCall(cl, function(x) .libPaths(x), .libPaths())

parallelResults <- foreach(i = 1:42, .combine = rbind) %dopar% {
    # do your stuff
}
2 голосов
/ 20 июня 2011

Вы можете использовать функцию .libPaths(), чтобы задать путь к библиотеке во время сеанса.

В противном случае могут помочь такие файлы запуска, как ~/.Renviron, см. ?Startup.

Наконец, если вы используете foreach для запуска разных машин, вам необходимо позаботиться опуть к библиотеке на каждой из машин.

0 голосов
/ 02 мая 2019

вы можете указать libPaths внутри функции

foreach(i = 1:2) %dopar% { .libPaths("your_location_to_pkg") library("pkg") ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...