C++ コードでR 関数rmultinomを使用して、Rcpp で使用したいと考えています。引数が足りないというエラーが表示されます - R の関数で使用される引数に対応していないため、これらの引数がどうあるべきかよくわかりません。 Rcpp コードから R 関数にアクセスするための構文。
以下は私のコードの簡略化されたバージョンです (はい、ギブスサンプラーを書いています)。
#include <Rcpp.h>
using namespace Rcpp;
// C++ implementation of the R which() function.
int whichC(NumericVector x, double val) {
int ind = -1;
int n = x.size();
for (int i = 0; i < n; ++i) {
if (x[i] == val) {
if (ind == -1) {
ind = i;
} else {
throw std::invalid_argument( "value appears multiple times." );
}
} // end if
} // end for
if (ind != -1) {
return ind;
} else {
throw std::invalid_argument( "value doesn't appear here!" );
return -1;
}
}
// [[Rcpp::export]]
int multSample(double p1, double p2, double p3) {
NumericVector params(3);
params(0) = p1;
params(1) = p2;
params(2) = p3;
// HERE'S THE PROBLEM.
RObject sampled = rmultinom(1, 1, params);
int out = whichC(as<NumericVector>(sampled), 1);
return out;
}
私はC ++を初めて使用するので、このコードの多くはおそらく初心者で非効率的であることを認識しています。私の C++ コードを改善する方法についての提案は受け付けていますが、私の優先事項は rmultinom ビジネスについて聞くことです。ありがとう!
ところで、このスレッドと似ていて申し訳ありませんが、
- 答えは私の目的にはうまくいきませんでした
- その違いは、別の質問を正当化するのに十分かもしれません (あなたはそう思いますか?)
- 質問は1年前に投稿され、回答されました。