我正在
Error in { : task 1 failed - "could not find function "%do%""
运行此代码时
....
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
}
}
}
知道这个错误发生的原因吗?谢谢!
答案 0 :(得分:7)
您的并行工作人员都在干净的R会话中运行,因此您必须在每个工作人员中加载foreach
包。
尝试将.packages="foreach"
添加到第一行,即:
mFR <- foreach(i=1:iters, .combine=rbind, .packages="foreach") %dopar% ...{
附加说明:foreach
包定义了一个运算符%:%
,旨在简化此类嵌套for循环。
要了解详情,请使用
library(foreach)
vignette("nested")