微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R中的foreach进行并行循环-对象未找到

如何解决R中的foreach进行并行循环-对象未找到

我正在尝试使用foreach功能在R中进行并行循环。此循环嵌套在“ for循环”内,它包含每次运行“ n”次zigam模型(软件包zigam)对数据集重新采样。 尝试执行此操作时,出现以下错误:{错误:任务1失败-“未找到对象“名称对象””。 如果我运行相同的代码但使用另一种类型的模型(例如mgcv包中的gam函数),则循环运行良好。以下代码一个快速重复的示例:

  l<-c("x","o")
for (u in l) {
  px<-NULL
px<-foreach(1:2,.combine = cbind) %dopar% {
  library(dplyr)
  library(mgcv)
  library(zigam)
xyz<-data.frame(x=rpois(100,2),y=runif(100),z=rnorm(100,3),h=rnorm(100,5),o=rpois(100,1))
newx<-data.frame(y=runif(20),z=rnorm(20,h=rnorm(20,5))
xyz_boot<-sample_n(xyz,100,replace=T)
pro<-zipgam(xyz_boot[,u]~s(y),~s(z)+s(h),data=xyz_boot)
predict(pro,newx,type="response")
}
assign(paste0("p",u),px)
print(u)
}

错误为{错误:任务1失败-“未找到对象“ xyz_boot””。但是xyz_boot的创建在循环之内。

如果我使用gam而不是zipgam运行相同的代码,则该代码有效。此外,如果仅执行foreach循环,则使用变量“ x”的名称而不是索引xyz_boot [,u],则该代码有效。

px<-NULL
px<-foreach(1:2,replace=T)
pro<-zipgam(x~s(y),type="response")
}

我该如何解决这个问题?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。