0
私はすでにR.parLapply - データフレーム
にparLapplyアルゴリズムによってejecutedデータフレームを回復しようとしながら、私は問題を抱えているが、私はこの問題を表示するように設定された虹彩データと、次の例を添付しました。 私は、それぞれのアイリスの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)
誰かがこのタスクにどのように役立つのですか?ありがとう!
はい、これは単なる例です。実際のデータには20k回以上の反復が含まれています。したがって、単純なループを適用すると、タスクに多くの時間がかかります。したがって、並列処理では、プロセスがより速くマッチするようになります。 – lolo
@loloわかりません。私は、問題を並列化するソリューションを提供しましたが、並列化する必要はないとは言えませんでした。 –