foreach错误"找不到函数"%do%""

jpc*_*dre 2 r

我越来越

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)

知道为什么会发生这种错误吗?谢谢!

And*_*rie 7

您的并行工作程序每个都在一个干净的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)