Lavoro comunemente con una breve funzione Rcpp che accetta come input una matrice in cui ogni riga contiene K probabilità che sommano a 1. La funzione quindi campiona casualmente per ogni riga un numero intero compreso tra 1 e K corrispondente alle probabilità fornite. Questa è la funzione:
// [[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;
}
Di recente ho aggiornato R e tutti i pacchetti. Ora non posso più compilare questa funzione. La ragione non mi è chiara. In esecuzione
library(Rcpp)
library(RcppArmadillo)
Rcpp::sourceCpp("sample_matrix.cpp")
genera il seguente errore:
error: call of overloaded 'sample(Rcpp::IntegerVector&, int, bool, Rcpp::Matrix<14>::Row)' is ambiguous
Questo in sostanza mi dice che la mia chiamata a RcppArmadillo::sample()
è ambigua. Qualcuno può illuminarmi sul perché questo è il caso?