RcppArmadillo
Armadilloの中身をみるためにはここからダウンロード RcppArmadilloの中身を見るためにはこのgithubへアクセス まずは、Armadilloが何かを確認しよう C++で素敵に線形代数をやるためのライブラリで、LAPAKとかに依存している(依存せずに使ってもよいらしいけ…
少しC++がわかってきたので、写経をしてもよい頃かも知れない こちらに数値計算系のサイトがあって、おもしろそう Advanced RのRcppのセクションも助走によい→Rcppの準備の確認はこちらで
http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CBEG/cbeg4.html:『配列で大量のデータ処理』 その6 intからdoubleへ変換 // sample06.cpp #include <stdio.h> main(void) { int score1, score2; double mean; printf("Input the score of No.1 = "); scanf("</stdio.h>…
『ループで繰り返し計算』 その4 ループで加算 // sample04.cpp #include <stdio.h> main(void) { int n; // 変数の宣言 int sum = 0; // 変数の宣言と初期化 // for ループ for( n=1 ; n<=10 ; n++ ){ sum += n; // 足し上げる } printf("The sum is %d\n", sum ); </stdio.h>…
『簡単な計算』 その1 文字列を表示・文字列を返す // sample01.cpp #include <stdio.h> main(void) { printf("Computer in Physics\n"); } // sample01R.cpp #include <stdio.h> #include <Rcpp.h> using namespace Rcpp; // [[Rcpp::export]] CharacterVector sample01() { //printf</rcpp.h></stdio.h></stdio.h>…
準備:g++が使えるようにしておく Have g++ ready. Windowsなら、Rtoolsを使ってR経由で使えるようにすればよい You can use Rtools for windows to get g++ ready. さて。Rとは別にArmadilloを使った1枚のソースコードファイルがあるとする You have one f…
こちらでself-avoiding pathを書いてみた。データ型宣言も体系的に勉強せずに、みようみまね、検索・検索真似で書いているので、なかなか大変 コンパイルはするけれど、データ格納場所(アドレス)指定の破たんなどが頻発するので、しょっちゅう止まります そ…
こちらにself-avoiding pathのシミュレーションがある Rcppを使って比較してみる #include <RcppArmadilloExtensions/sample.h> // [[Rcpp::depends(RcppArmadillo)]] using namespace Rcpp ; // [[Rcpp::export]] using namespace Rcpp; IntegerMatrix selfAvoidingPathCpp2(int k,int past,in</rcpparmadilloextensions/sample.h>…
練習でたくさんのcppファイルを作ると、sourceCpp("hoge.cpp")が面倒くさくなる ので、ディレクトリの中のcppファイルのリストを作って、一括して処理 library(Rcpp) library(RcppArmadillo) sourceCpp.list <- function(files,silent=TRUE){ for(i in 1:len…
線形回帰 data(trees, package="datasets") fastLmPure( cbind(1, log(trees$Girth)), log(trees$Volume) ) fastLm( log(Volume) ~ log(Girth), data=trees) lm(log(trees$Volume) ~ log(trees$Girth)) > fastLmPure( cbind(1, log(trees$Girth)), log(trees…
こちらのマハラノビス距離の繰り返し計算でスピードアップの様子を見てみよう cxxfunction()関数を使っている例をsourceCpp()用に書き換えてみる データ型指定はRcpp namespace形式らしい ## Using RcppArmadillo code <- 'arma::mat x = Rcpp::as<arma::mat>(X); arma:</arma::mat>…
Cppの線形代数ライブラリArmadillo sample()をcppにしてみよう。速くはならないけれど、cpp内での処理が可能になる "csample_char.cpp","csample_num.cpp"という関数ファイルを作って、sourceRcpp()する(参考) // [[Rcpp::depends(RcppArmadillo)]] #include <RcppArmadilloExtensions/sample.h></rcpparmadilloextensions/sample.h>…