昨夜から と を試してきましたがRcpp
、inline
今のところとても楽しんでいます。しかし、私はC
一般的に初心者で、まだ基本的なことしかできず、関数などについてオンラインでヘルプを見つけるのに苦労しています。
私が取り組んでいたのは、グローバル環境でベクトルの最小値を見つける関数でした。私が思いついた:
library("inline")
library("Rcpp")
foo <- rnorm(100)
bar <- cxxfunction( signature(),
'
Environment e = Environment::global_env();
NumericVector foo = e["foo"];
int min;
for (int i = 0; i < foo.size(); i++)
{
if ( foo[i] < foo[min] ) min = i;
}
return wrap(min+1);
', plugin = "Rcpp")
bar()
しかし、これを行うにはもっと簡単な方法があるはずのようで、それはよりもかなり遅いですwhich.max()
system.time(replicate(100000,bar()))
user system elapsed
0.27 0.00 0.26
system.time(replicate(100000,which.min(foo)))
user system elapsed
0.2 0.0 0.2
c++
これを行う基本またはRcpp
機能を見落としていますか?もしそうなら、そのような関数のリストはどこにありますか?
この質問は、遅い R 関数を高速化するための C コードの書き方をどこで学べますか? に関連していると思い ます。
しかし、私は に組み込む方法にはあまり興味がなくc++
、で使用できる基本的なコードをR
どこでどのように学ぶかについてもっと興味があるという点で異なります。c++
R