我通常使用一个简短的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()
不明确。有人能启发我为什么会这样吗?