次の行列を考えてみましょう。
nc <- 5000
nr <- 1024
m <- matrix(rnorm(nc*nr), ncol=nc)
rowMeans
この行列でランダムに取得された同じサイズの2つのグループの違いを取得したいと思います。
n <- 1000 # group size
system.time(replicate(100, {
ind1 <- sample(seq.int(nc), n)
ind2 <- sample(seq.int(nc), n)
rowMeans(m[, ind1]) - rowMeans(m[, ind2])
}))
かなり遅いですが、残念ながらRprofの出力がわかりませんでした(ほとんどの時間が費やされたようですis.data.frame
??)
より効率的なものの提案?
私は次のことを考えました:
Rcpp
:私のオンライン測定値から、RのrowMeansは非常に効率的であると信じているので、このステップで役立つかどうかは明らかではありません。ボトルネックが実際にどこにあるのかを確信したいのですが、おそらく私のデザイン全体が最適ではありません。小さい行列ごとにコピーを作成するのにほとんどの時間が費やされている場合、Rcppのパフォーマンスは向上しますか?R-develにアップデートすると、
.rowMeans
さらに効率的な新機能があるようです。誰かがそれを試しましたか?
ありがとう。