Ich arbeite üblicherweise mit einer kurzen Rcpp-Funktion, die als Eingabe eine Matrix verwendet, in der jede Zeile K Wahrscheinlichkeiten enthält, die sich zu 1 summieren. Die Funktion tastet dann für jede Zeile zufällig eine Ganzzahl zwischen 1 und K ab, die den bereitgestellten Wahrscheinlichkeiten entspricht. Dies ist die Funktion:
// [[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;
}
Ich habe kürzlich R und alle Pakete aktualisiert. Jetzt kann ich diese Funktion nicht mehr kompilieren. Der Grund ist mir nicht klar. Laufen
library(Rcpp)
library(RcppArmadillo)
Rcpp::sourceCpp("sample_matrix.cpp")
löst folgenden Fehler aus:
error: call of overloaded 'sample(Rcpp::IntegerVector&, int, bool, Rcpp::Matrix<14>::Row)' is ambiguous
Dies sagt mir im Grunde, dass mein Anruf an nicht RcppArmadillo::sample()
eindeutig ist. Kann mich jemand aufklären, warum dies der Fall ist?