> ベンチマークで利用しているデータは10,000行1,000列のデータフレームですが、for 文が有利なように恣意的に設定されている気がします。
> colMeans のボトルネックは as.matrix であり、for 文のボトルネックは R 側で行われる繰り返し処理そのものです。
恣意的に設定したわけではないけど。状況によってはこんなこともあるということ。シミュレーションなんて,限られた条件の下で実験するわけで,実験条件が不適切だといわれても,ネエ。
for ループを使うやり方は列数に比例して計算時間がかかる。行数が 8000 程度以下なら colMeans の方が速い。10000 程度以上になると逆転する。
as.matrix がボトルネックだということなんだから,そもそも matrix で用が足りるときには,read.table などでデータフレームに読み込まない。あるいは読んでも,すぐさま行列にして,必要なら save でもしておいて,いつも行列を使う(二度と read.table しない)と良いと言うこと。list (data frame) は便利だけど高くつく。
しかし,ああだこうだといっても,あれだけの計算をして計算時間は 1 秒未満だということ。めくじらたてるこたあない。