ご存知のとおり、Rは大規模な分析を実行するための最も効率的なプラットフォームではありません。3つのパラメータを含む大きなデータフレームがある場合:
GROUP X Y
A 1 2
A 2 2
A 2 3
...
B 1 1
B 2 3
B 1 4
...
millions of rows
そして、各グループで計算を実行し(たとえば、X、Yでピアソンのrを計算)、結果を新しいデータフレームに格納したかったので、次のように実行できます。
df = loadDataFrameFrom( someFile )
results = data.frame()
for ( g in unique( df$GROUP)) ){
gdf <- subset( df, df$GROUP == g )
partialRes <- slowStuff( gdf$X,gdf$Y )
results = rbind( results, data.frame( GROUP = g, RES = partialRes ) )
}
// results contains all the results here.
useResults(results)
明らかな問題は、強力なマルチコアマシンであっても、これが非常に遅いことです。
私の質問は次のとおりです。たとえば、グループごとまたはグループのブロックごとに個別のスレッドを使用して、この計算を並列化することは可能ですか?この単純な分割統治問題を解決するためのクリーンなRパターンはありますか?
ありがとう、Mulone