0
我有一個問題,而我試圖恢復已經由parLapply算法R.parLapply中的R - dataframes
ejecuted數據幀I附着有虹膜數據設置爲顯示該問題的下一個例子。 我創建了一個函數,爲每個虹膜種類做一個線性模型,然後通過它們循環。
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)
有人幫我完成這個任務嗎?謝謝!
是的,這只是一個例子。真實數據包含超過20k次迭代,因此,如果我應用簡單的循環,任務需要數小時。所以,在並行的情況下,這個過程會更快。 – lolo
@ lolo我不明白。我剛剛給你解決方案來並行化你的問題,而不是說你不需要並行化它。 –