Je travaille généralement avec une fonction Rcpp courte qui prend en entrée une matrice où chaque ligne contient K probabilités qui totalisent 1. La fonction échantillonne ensuite au hasard pour chaque ligne un entier entre 1 et K correspondant aux probabilités fournies. Voici la fonction:
// [[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;
}
J'ai récemment mis à jour R et tous les packages. Maintenant, je ne peux plus compiler cette fonction. La raison n'est pas claire pour moi. Fonctionnement
library(Rcpp)
library(RcppArmadillo)
Rcpp::sourceCpp("sample_matrix.cpp")
renvoie l'erreur suivante:
error: call of overloaded 'sample(Rcpp::IntegerVector&, int, bool, Rcpp::Matrix<14>::Row)' is ambiguous
Cela me dit essentiellement que mon appel à RcppArmadillo::sample()
est ambigu. Quelqu'un peut-il m'expliquer pourquoi c'est le cas?
la source