簡體   English   中英

如何在foreach(…,.packages =“ pkg”)%dopar%中指定R包的位置

[英]How to specify the location of R packages in foreach( … , .packages=“pkg”) %dopar%

我的“ pkg”安裝在其他地方,如何告訴foreach在哪里找到軟件包?

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

這給我錯誤信息:

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

謝謝您的幫助。

另一種方法是在調用foreach之前將.libPaths發給所有工作程序:

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
}

您可以使用.libPaths()函數在運行的會話中設置庫路徑。

否則,諸如~/.Renviron類的啟動文件會有所幫助,請參見?Startup

最后,如果使用foreach來運行不同的計算機,則需要注意每台計算機上的庫路徑。

您可以在函數內部指定libPaths

foreach(i = 1:2) %dopar% { .libPaths("your_location_to_pkg") library("pkg") ... }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM