Как указать расположение пакетов R в foreach (..., .packages = "pkg")% dopar%

r foreach

1436 просмотра

3 ответа

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

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

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

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

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

Автор: user741819 Источник Размещён: 14.07.2019 09:25

Ответы (3)


2 плюса

Решение

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

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

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

Автор: Dirk Eddelbuettel Размещён: 20.06.2011 02:07

3 плюса

Другой подход заключается в распространении .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
}
Автор: Boern Размещён: 30.06.2016 07:39

0 плюса

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

foreach(i = 1:2) %dopar% { .libPaths("your_location_to_pkg") library("pkg") ... }
Автор: Fraca Размещён: 02.05.2019 10:24
Вопросы из категории :
32x32