RからC++を使いたい (Rcppの練習)
Rは便利ですが, 重たい計算をさせると遅いです.
計算が重たい部分だけ他の言語を利用すれば, 早く計算できますね.
今回はRからC++を利用します.
Rcppというパッケージを使えばいいです.
便利で速い計算環境が構築できるんじゃないですかね.
RからC++を使う
Rcppをインストールすればいいです.
ついでにinlineもインストールします.
Rのソースコードの中で, 遅いところだけC++で書き直せばいいです.
試しに, ソートの実行をしてみます.
STL sort with Rcpp
Rコードの中で, ちょっとだけC++のコードを書けばいいです.
これはありがたいです. コンパイルも楽です.
実験してみましょう.
> stlsort(20:1) [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
ちゃんとできます.
ところで, Rにもsort関数があります.
どちらが速いでしょうか. 比べてみましょう.
配列の長さを変えながら, 10^n列のランダムな数列をソートして, その時間を測ってみました.
...
要素数が1000万個を超えたくらいからRでは辛そうです
でもそんな長い配列を使う機会ってありませんし...
ソートの場合はRでいいですね.
図の軸を指数表示したい
図で少し工夫があります. 何もせずにggplotするとこうなります.
x軸のラベルの表示がダサいです.
10^n という形で表示をさせたいです.
10^n という形で表示したいときには, パッケージを利用する必要があると思います.
scalesというパッケージです.
CRAN - Package scales
ドキュメントを見ると, なかなか多機能みたいですね.
使い方は, ggplotのレイヤーを書き加える過程で,
p <- p + scale_x_log10(breaks=10^(1:8), labels=trans_format("log10", math_format(10^.x)))
とすればOKです.
これは知りませんでした.
次はBoostやEigen, QuantLibなどのC++の高速演算ライブラリをRから使ってみます.