0
我只是无法在并行foreach中使用ovun.sample。在R doParallel foreach循环中运行ovun.sample
下面是最小的工作示例。
library(doParallel)
library(ROSE) # ovun.sample
if(!getDoParRegistered()){
registerDoParallel(cores=detectCores())
}
foreach(i=1:2,.combine=rbind, .packages=c("ROSE")) %dopar% {
my_data = iris[iris$Species != "setosa",]
under_data <- ovun.sample(Species ~ ., data=my_data, N=40, seed = 1)$data
}
print(r)
我得到错误:
Error in { : task 1 failed - "object 'my_data' not found"
任何想法,我错过了什么。或者也许是另一种类似于与doParallel一起使用的ROSE的过度/不足采样包?在Windows上运行。
感谢您的建议,但'data = get(“my_data”,sys.frame(1))'也不起作用。我也试过.export = c(“my_data”),也不起作用。 但是这是有效的: 结果< - foreach(i = 1:2,.combine = rbind,.packages = c(“SDR”,“ROSE”))%dopar%my_data = iris [iris $种类!= “setosa”,] 总和(虹膜$物种== “弗吉尼亚”) } 打印(结果)' 我只是不知道为什么不与功能ovun.sample工作。 –
对于'.export = my_data'工作,'my_data'必须在主代码的foreach循环之前定义。这真的应该工作。 它必须是关于执行环境。 ''ovun.sample'将'data'选项描述为'如果未指定,则变量取自“环境(公式)。”。这表明它可能是公式中的'.'和'my_data'之间的冲突。如果完全删除'data = my_data'选项会发生什么情况? –