当在 Windows 上使用 R 中的数据组时, 我试图找到一个简单的方法将数据组的结果从数据组转换到主机。 如果结果是一个数组或一个简单数字, 则对每个 /% dopar% 语句的.combine 选项会处理此事, 但是如果结果是一个复杂的对象, 如果结果是一个复杂的对象, 则让这样一个随机Forest 模型, 如何将整个模型从奴隶组转换回主机?
我尝试使用 env=. global
来与 env=. global
进行拼接,但是对我的 Windows 7 没用。
最后,我通过保存对象以存档来工作。然后主人可以收回对象。如果有人知道更优雅的方法或者为什么屁股不工作,我很感激你的评论。
样本代码 :
print(" paralelize with 8 cores ------------------------------")
library(doSNOW)
cl<-makeCluster(8)
registerDoSNOW(cl)
clusterEvalQ(cl, library(randomForest))
clusterExport(cl, "x")
clusterExport(cl, "y")
clusterExport(cl, "x.selected")
makeModel <- function(i){
m <- randomForest(x,x.selected[i,],mtry=250,sampsize=3200,ntree = 3000,do.trace=TRUE)
eval(parse(text = paste("model_",i," <- m",sep="")))
eval(parse( text =paste("save(model_", i, ", file ="model_", i, ".Rdata")",sep="" ) ))
}
foreach(i = 1:length(x.selected[,1]),.verbose = TRUE ) %dopar% makeModel(i)
stopCluster(cl)
foreach(i = 1:length(x.selected[,1]),.verbose = TRUE ) %do%
load(paste("model_",i,".RData",sep=""))