【发布时间】:2017-10-10 15:02:08
【问题描述】:
我在尝试恢复 R 中 parLapply 算法已经弹出的数据帧时遇到问题。
我在下一个示例中附上了 iris 数据集来说明问题。 我创建了一个函数,它对每个 iris Species 进行线性模型,然后在它们上应用一个循环。
uniques<-unique(iris$Species)
model<-function(i){
table<-iris[iris$Species==uniques[i],]
fit<-lm(Petal.Width ~ Petal.Length + Sepal.Width + Sepal.Length, data=table)
predicted_df <- data.frame(pred = predict(fit, table), table)
assign(paste0("predicted_df_",i),predicted_df,envir = .GlobalEnv)
}
#Loop over Species
loop<- for (i in 1:3){
model(i)
}
这里,树数据库(“predicted_df_1/2/3”)正确出现在本地环境中。
当我使用 parLapply 算法执行相同的操作时,我找不到数据帧在哪里或如何将它们带到本地环境。没有显示错误。
library("foreach")
library("doParallel")
cl <- makeCluster(mc <- getOption("cl.cores", 4))
clusterExport(cl=cl, varlist=c("iris"))
clusterEvalQ(cl, library(DAAG))
registerDoParallel(cl) # register the cluster
system.time(
df <- parLapply(cl, 1:3,
function(i) {
tryCatch({ model(i)}, error=function(e){cat("ERROR :",conditionMessage(e), "\n")})
})
)
stopCluster(cl)
有人如何帮助我完成这项任务?谢谢!
【问题讨论】:
标签: r parallel-processing