我越来越
Error in { : task 1 failed - "could not find function "%do%""
Run Code Online (Sandbox Code Playgroud)
运行此代码时
....
niters = 1000
mFR <- foreach(i=1:iters, .combine=rbind) %dopar% {
foreach(j=1:iters, .combine=c) %do% {
mp2 <- mp[sample(1:1e6, iters)]
fexist = 0
if (mp2[j]>mR12[i]) {
Frv = 1
fexist = 1
} else if (mp2[j]<=mRy2[i]) {
Frv = 0
fexist = 1
} else {
if (mRy2[i]>mR12[i]) {
Frv = 1
} else {
fexist = 1
b = mDMDuc1[i]/(1-mR12[i]/mRy2[i])
m = -b/mRy2[i]
DMDp = m*mp2[j] + b
Frv = (DMDp - 0)/(mDMDc2[i] - 0)
}
}
if (fexist==1) {
mFR <- matrix(Frv, ncol=1, nrow = 1)
mFR
}
}
}
Run Code Online (Sandbox Code Playgroud)
知道为什么会发生这种错误吗?谢谢!
您的并行工作程序每个都在一个干净的R会话中运行,因此您必须foreach在每个工作程序中加载该程序包.
尝试添加.packages="foreach"到第一行,即:
mFR <- foreach(i=1:iters, .combine=rbind, .packages="foreach") %dopar% ...{
Run Code Online (Sandbox Code Playgroud)
附加说明:该foreach包定义了一个操作符%:%,旨在简化这种类型的嵌套for循环.
要了解更多信息,请使用
library(foreach)
vignette("nested")
Run Code Online (Sandbox Code Playgroud)