Я обычно работаю с короткой функцией Rcpp, которая принимает в качестве входных данных матрицу, в которой каждая строка содержит K вероятностей, сумма которых равна 1. Затем функция случайным образом выбирает для каждой строки целое число от 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()
неоднозначен. Может ли кто-нибудь объяснить мне, почему это так?
источник