Microsoft R Open 3.2.3 - Windows Server 2008 R2 Enterprise - 64位,8个内核和大量内存。
我使用4个核心执行randomForest,一切正常(比单线程快4倍),除了我无法合并结果。
我尝试了两次不同的代码:
1)我运行foreach而不是稍后合并结果:
library(randomForest)
library(doSNOW)
cl<-makeCluster(4)
registerDoSNOW(cl)
classif<-foreach(ntreeRF=rep(25,4), .packages="randomForest") %dopar% {
randomForest(x=my_df,y=my_df[,answer],mtry=10,nodeSize=50,ntree=ntreeRF)
}
classif_comb<-combine(classif[[1]],classif[[2]],classif[[3]],classif[[4]])
#also tried: classif_comb<-do.call('combine',classif), but classif is a 'list' object
stop(cl)
#class of classif[[n]] is randomForest
2)这里我尝试在foreach函数中使用.combine参数
library(randomForest)
library(doSNOW)
cl<-makeCluster(4)
registerDoSNOW(cl)
classif<-foreach(ntreeRF=rep(25,4), .packages="randomForest",.combine=combine, .inorder=FALSE) %dopar% {
randomForest(x=my_df,y=my_df[,answer],mtry=10,nodeSize=50,ntree=ntreeRF)
}
stop(cl)
在两者中我收到了相同的错误消息: &#34; combine()由于命名冲突而被重新命名为consolidate()&#34;
当我运行&#34;相同&#34;我的笔记本电脑中的代码,使用虹膜数据,一切正常。
另外,当我加载doSNOW库时,我收到一条警告消息:&#34;在R版本3.3.1和#34;下构建..但是combine()函数属于randomForest Package,所以我认为不是问题..
有什么想法吗?!
谢谢!