나는 일반적으로 짧은 Rcpp 함수를 사용하여 각 행에 1의 K 확률을 포함하는 행렬을 입력으로 사용합니다.이 함수는 각 확률에 대해 제공된 확률에 해당하는 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()
이 모호하다는 것을 말해줍니다 . 왜 이런 경우에 대해 누군가 나를 밝힐 수 있습니까?