あなたは幸運です。我々はこれをmvabundとRblpapiに必要とし、最後(2回)のRcppリリース以降に持っています。
だから、これは試してみてください。
// [[Rcpp::export]]
int test(int a, Rcpp::Nullable<Rcpp::IntegerVector> kfolds = R_NilValue) {
if (kfolds.isNotNull()) {
// ... your code here but note inverted test ...
素敵な完全な例がhere in Rblpapiです。 また、既定値を設定することもできます(デフォルトの値を持つこのオプションの右側にあるすべてのオプションのC++での通常の規則に従います)。
編集:完全酒について、ここでは完全な例である:この出力を生成
#include <Rcpp.h>
// [[Rcpp::export]]
int testfun(Rcpp::Nullable<Rcpp::IntegerVector> kfolds = R_NilValue) {
if (kfolds.isNotNull()) {
Rcpp::IntegerVector x(kfolds);
Rcpp::Rcout << "Not NULL\n";
Rcpp::Rcout << x << std::endl;
} else {
Rcpp::Rcout << "Is NULL\n";
}
return(42);
}
/*** R
testfun(NULL)
testfun(c(1L, 3L, 5L))
*/
:
R> sourceCpp( "/ TMP/nick.cpp")
R> testfun(NULL)
Is NULL
[1] 42
R> testfun(c(1L, 3L, 5L))
Not NULL
1 3 5
[1] 42
R>
'cout'を使わず、' Rcpp :: Rcout'を使用してください。 – Roland
@Rolandなぜですか?違いは何ですか? – Nick
AFAIK、 'cout'は端末からRを実行する場合にのみ動作します。他にも問題があるかもしれませんが、わかりません。私はこれらの点で私のベター(ディルクなど)の助言に従います。 – Roland