ベクトル演算の高速化

  • Rのベクトル演算は相当早いらしい。[Link]
  • 結果値をベクトルで返す場合、最初に空のベクトルを生成し、そこに結果値積み上げる方式が簡単だが、メモリ的には望ましくない。
  • もちろん反復回数が少ない場合は体感上、どっちでもいい。

  • 解決策としては

result.vec <- vector(length = n)

あるいは

result.vec <- rep(NA, n)
  • のようにメモリを事前に確保しておけばいい。
  • メモリを確保したベクトルにresult.vec[i] <- hogehogeのように値を格納する。
  • 結果値のベクトルの長さが事前に分からない場合は余裕を持ってnを指定し、最後に削る方法でいい。
  • 当然のことだが、本当に高速化したいならCでコード化した方がいい。