众所周知,R 并不是运行大型分析的最有效平台。如果我有一个包含三个参数的大型数据框:
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 上计算 Pearson 的 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 模式来解决这个简单的除法问题?
谢谢,穆龙