inline

Rtoolsを使ってR(cpp)を使う環境を整える

こちらでRcppを使うためにWinGWやMSYSのインストールを、と書いた あるパソコンではうまく行ったが、別のパソコンで同じ手順でやった(つもり)だが、うまく行かないので、調べものをした *ERROR(s) during compilation: source code errors or compiler con…

Deep copyしたりとか

こちらからの続き 2次元離散拡散シミュレーションができれば、かなりの用が足りる やってみる やってみる上でいくつかのひっかかりが出るので、メモしておく # 行列の世代更新 # 空を作って Rcpp::IntegerMatrix tmpx(2*n1,2*n2); # 写す std::copy(x.begin…

Rcppレファレンスサイトで使えるC/C++関数を見つける

Rcppを使って、乱数を作る話を書いた(こちら) library(Rcpp) library(inline) src<-' RNGScope z; int n=as<int>(N); double m=as<double>(M); return rexp(n, m); ' fx.rexp <- cxxfunction(signature(N="integer",M="numeric"),src,plugin="Rcpp") 上記のsrc これはC++</double></int>…

RとC++:乱数の生成2

こちらには、"3.3 Can I use code from the Rmath header and library with Rcpp ? Can I call functions defined in the Rmath header file and the standalone math library for R–as for example the random number generators?" という質問がある Rで使っ…

RNGscope()

前の記事でRNGScope()、RNGScope zを試して、それを使わないバージョンも試した fx <- cxxfunction(signature(),'RNGScope();return rnorm(5, 0, 100);',plugin="Rcpp") fx2 <- cxxfunction(signature(),'return rnorm(5, 0, 100);',plugin="Rcpp") fx3 <- c…

RとC++:乱数の生成

こちらからの続き 乱数を発生するシミュレーションをしてみる 基本は一様整数乱数を発生させるrand()と計算機の時刻からシード整数を取るsrand() rand()は規定の大きな整数を最大値とする一様整数乱数を作るので、0-1の実数一様乱数を作るには r = (double)r…

RとC++:C++のStandard Template Libraryをさらに調べる

Standard Template LibraryというのはC++の中の仕組みで、std::transformはそのうちの一つであるが、その仕組みを調べる 特に、複数の引数を与えること(複数の返り値を得ること)がどうなっているかについて情報を集める こちら

RとC++:Rの処理をそのままC++化(Standard Template Libraryでやる方法)

参考は以下のようにして出るvignett記事の"Using Standard Template Library algorithms" library(Rcpp) library(inline) vignette( "Rcpp-introduction" ) この記事の例題をなぞってみる src <- ' Rcpp::List input(data); Rcpp::Function f(fun); Rcpp::Li…

RとC++:オブジェクトの変換・対応

こちらからの続き RのオブジェクトとC++のそれの対応 R->C++がたくさんある C++->Rは(2行目の)wrap()。(これのみ?) a b c Rcpp::as() used to map SEXP to a C++ object (or proxy) Rcpp::wrap() used to map C++ object to a SEXP Rcpp::List proxy class…

cxxfunction()に慣れる

動くソースができたので、少しずつ複雑にしよう 3次元格子から任意次元格子へ library(Rcpp) library(inline) my.body2 <- ' IntegerVector a(A); IntegerVector b(B); int c=as<int>(C);; int n = a.length(); NumericMatrix x(n,c); for(int i=0;i</int>

cxxfunction()を使う

前の記事でinlineパッケージのcxxfunction()を使ってC++化することを書いた 問題は、cxxfunction()を使えるようになること 語学の勉強なので、「動く言葉」を蒐集してなんとか使えるようになればよいだろう "cxxfunction"をキーワードに検索をかけてリンクを…

RcppをWindowsで使う

RcppはRの(関数を作ったりするときに使う)パッケージでC++を使うためのパッケージ WindowsでRを使っており、ちょっと前作業も必要なので、冬休みくらいに、時間があるときに向いている こちらで書かれているように「むっちゃ速い」ということなので、試して…