Tôi thường làm việc với hàm Rcpp ngắn, lấy đầu vào là ma trận trong đó mỗi hàng chứa K xác suất tổng bằng 1. Hàm sau đó lấy mẫu ngẫu nhiên cho mỗi hàng một số nguyên từ 1 đến K tương ứng với xác suất được cung cấp. Đây là chức năng:
// [[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;
}
Gần đây tôi đã cập nhật R và tất cả các gói. Bây giờ tôi không thể biên dịch hàm này nữa. Lý do không rõ ràng với tôi. Đang chạy
library(Rcpp)
library(RcppArmadillo)
Rcpp::sourceCpp("sample_matrix.cpp")
ném lỗi sau:
error: call of overloaded 'sample(Rcpp::IntegerVector&, int, bool, Rcpp::Matrix<14>::Row)' is ambiguous
Điều này về cơ bản cho tôi biết rằng cuộc gọi của tôi RcppArmadillo::sample()
là mơ hồ. Bất cứ ai có thể khai sáng cho tôi tại sao đây là trường hợp?