私は通常、各行に合計1のK確率が含まれている行列を入力として受け取る短いRcpp関数を使用します。この関数は、提供された確率に対応する1〜Kの整数を各行に対してランダムにサンプリングします。これは関数です:
// [[Rcpp::depends(RcppArmadillo)]]
#include <RcppArmadilloExtensions/sample.h>
using namespace Rcpp;
// [[Rcpp::export]]
IntegerVector sample_matrix(NumericMatrix x, IntegerVector choice_set) {
int n = x.nrow();
IntegerVector result(n);
for ( int i = 0; i < n; ++i ) {
result[i] = RcppArmadillo::sample(choice_set, 1, false, x(i, _))[0];
}
return result;
}
最近、Rとすべてのパッケージを更新しました。この関数はもうコンパイルできません。その理由ははっきりしない。ランニング
library(Rcpp)
library(RcppArmadillo)
Rcpp::sourceCpp("sample_matrix.cpp")
次のエラーをスローします。
error: call of overloaded 'sample(Rcpp::IntegerVector&, int, bool, Rcpp::Matrix<14>::Row)' is ambiguous
これは基本的に、私の呼び出しRcppArmadillo::sample()
が曖昧であることを示しています。なぜこれが事実であるかについて誰かが私を啓発できますか?