私は Rcpp を独学していて、Rcpp 糖にはサンプル機能がないことに気付きました。そこで、C++ からベース ライブラリのサンプル関数を呼び出すことにしました。2 つの質問があります。
1. 引数 prob の型についてですが、NumericVector を使用すればよいのでしょうか? ベクトル型を使用することは合法ですか?
2. 出力の型に関しては、IntegerVector を使用する必要がありますか? NumericVector 型を使用することは合法ですか?
これらのタイプはすべて問題ないようですが (以下のコードを参照)、どのタイプを使用するのが適切かを知りたいです。
<!-- language-all: lang-html -->
library(inline)
library(Rcpp)
src1 <- '
RNGScope scope;
NumericVector thenum(1),myprob(3);
myprob[0]=0.1;
myprob[1]=0.5;
myprob[2]=0.4;
Environment base("package:base");
Function sample = base["sample"];
thenum = sample(3,Named("size",1),Named("prob",myprob));
return wrap(thenum);
'
src2 <- '
RNGScope scope;
IntegerVector theint(1);
vector<double> myprob(3);
myprob[0]=0.1;
myprob[1]=0.5;
myprob[2]=0.4;
Environment base("package:base");
Function sample = base["sample"];
theint = sample(3,Named("size",1),Named("prob",myprob));
return wrap(theint);
'
fun1 <- cxxfunction(signature(),body=src1,plugin="Rcpp")
fun2 <- cxxfunction(signature(),body=src2,include='using namespace std;',plugin="Rcpp")
fun1() ## work!
fun2() ## oh this works too!