中央に巨大な集計と結合のステップがあるシミュレーションがあります。私は、plyr の ddply() 関数を使用して、このプロセスのプロトタイプを作成しました。これは、私のニーズの大部分でうまく機能します。しかし、10K のシミュレーションを実行する必要があるため、この集約ステップを高速化する必要があります。すでにシミュレーションを並行してスケーリングしていますが、この 1 ステップが速ければ、必要なノードの数を大幅に減らすことができます。
これが私がやろうとしていることの合理的な単純化です:
library(Hmisc)
# Set up some example data
year <- sample(1970:2008, 1e6, rep=T)
state <- sample(1:50, 1e6, rep=T)
group1 <- sample(1:6, 1e6, rep=T)
group2 <- sample(1:3, 1e6, rep=T)
myFact <- rnorm(100, 15, 1e6)
weights <- rnorm(1e6)
myDF <- data.frame(year, state, group1, group2, myFact, weights)
# this is the step I want to make faster
system.time(aggregateDF <- ddply(myDF, c("year", "state", "group1", "group2"),
function(df) wtd.mean(df$myFact, weights=df$weights)
)
)
すべてのヒントや提案を歓迎します!