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'選項會發生什麼情況? –