ローカルに保存されたデータベースを照会するためにforeach構文を使用したいと思います。RODBC&foreach
私のコードは以下のようになります。
h <- odbcDriverConnect(connection)
cl<-makeCluster(no_cores)
registerDoParallel(cl)
foreach(i = 1:dim(Table)[1],
.combine = rbind,
.export = "h",
.packages = "RODBC") %dopar% {
cat(i,"\n")
#h <- odbcDriverConnect(connection)
sqlQuery(query)
}
odbcCloseAll()
stopCluster(cl)
私は%を使用する代わりに、それが正常に動作%のdoparの%の%を行いますが、私はそれ、私はこのエラーを取得するパラレル作るしようとすると:
Error in { : task 1 failed - "first argument is not an open RODBC channel" In addition: Warning message: In e$fun(obj, substitute(ex), parent.frame(), e$data) : already exporting variable(s): h
私はhをforeachループの内側に置くと動作しますが、1ステップごとに接続を作成することを理解していますので、避けたいと思います。その接続をforeach(他の変数と同じ方法で)にエクスポートする方法はありますか?
*ローカルストアドデータベースを検索するためにforeach構文を使用したいと思っています* ...なぜですか?本当の問題は何ですか?それとも、これを学んでいますか? – Parfait
私はちょうどお互いに関連していないいくつかのクエリーの結果を取得する必要があるので、それは非常に平行な問題です。そのようにすれば結果がより速くなることを願っています。私が間違っている? しかし、それが速くならない場合でもforeachの変数isteadをエクスポートすることが可能かどうかを知りたいです – Swistak