我自己创建了一个包,并尝试将其应用到并行计算中。
假设包中包含function1和function2。
我的代码是
cl = makeCluster(2)
registerDoParallel(cl)
foreach(i=1:N,.packages='mypackage') %dopar% {
res = function1(i)
res
}
stopCluster(cl)
然后就报错了,function1在mypackage中。
Error in { : task 1 failed - "could not find function "function1""
但是,如果我通过添加更改代码
.export = 'function1'
错误消失。
感谢任何可以解释这一点的人。
最佳答案
要么像 OP 提到的那样使用 .export
,要么将函数指定为 packageName::functionName
cl = makeCluster(2)
registerDoParallel(cl)
foreach(i=1:N,.packages='mypackage') %dopar% {
res = mypackage::function1(i)
res
}
stopCluster(cl)
关于r - 使用外部包的foreach并行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68569411/