tokyo.r 白熱教室「これからのrcppの話をしよう」
DESCRIPTION
第29回R勉強会@東京(#TokyoR)の資料TRANSCRIPT
Tokyo. 白熱教室 「これからのRcppの話をしよう」
第29回 勉強会@東京(#TokyoR)
@teramonagi
2
Rcpp て何?
Rcppって?
3 (出所)CRAN・Rcppパッケージのサイトより
Rcppって?
4 (出所)CRAN・Rcppパッケージのサイトより
R言語の中で C++が使える
どのくらい 凄いのか?
5
魔・獣・召・喚 6 (出所)DeNA・神撃のバハムート・オフィシャルサイトより
1:R言語&C++(C言語) の昔の連携法
7
グワーッ!!! 8
.C・.Callという2つの方法 • .C関数による呼び出し
–生のCで書かんといかん –R側で関数を呼ぶのがとても手間
• .Call関数による呼び出し – (R側の)メモリ管理を自分でしないといけない –SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP
• 共通 –ShellからR CMD SHLIBで共有ライブラリ化&
dyn.load関数でR側にロード
9
コード・サンプル(.Call版)
10 (出所)第7回R勉強会@東京「RとC/C++の連携」 written by @sfchaos
くわしくはこちら
11 (出所)第7回R勉強会@東京「RとC/C++の連携」 written by @sfchaos
幾人もの勇者が帰らぬ人となった
12
2:Rcppの今
13
♥♥Heaven♥♥ 14
インストールのお話
• 本資料の対象OS:windows 7 64bit
–Mac:Xcode, gfortranあたり入れとけ
–Linux: r-base-dev or 開発系入れとけ
• 要するにC++コンパイラが必要
• わかんなかったら
–「Frequently Asked Questions about Rcpp」(PDF)
–Stackoverflowを「Rcpp」+関連用語検索
15
Rを入れます
16 (出所)CRAN
Rtoolsを入れます
17
(出所)CRAN、C++コンパイラ+linuxコマンド少々が入る。デフォルトのインストール先でOK、インストール済みのRのバージョンをcompatibilityに合わせる。C:¥Rtools¥binとC:¥Rtools¥gcc-ver¥binにはパスを通しておいた方が良い(今回の例では不要。ただしinlineパッケージを使う際には必要となる。よくpythonのパスと競合する点に注意)
Rstudioもいれます
18 (出所)RStudio、Recommendされた版で良いかと。インストール先もデフォルトでOK
Rstudioを起動してC++書きます
19
C++のコード(fibCpp.cpp)
20
Rのコード(script.R)
21 ※ここではfibCpp.cppはこのスクリプトと同じフォルダに保存してあるとする
計算を実行して速度比較
22
3000倍高速…!?!?
23
これからの Rcppの話をしよう 24
Rcppついに書籍化
25 (出所)Amazon.com
JSSにRcppEigen掲載
26 (出所)Jounal of Statistical Software
Rcppのこれからの活躍にご期待ください
27