ฉันมักจะทำงานกับฟังก์ชั่น 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()
คลุมเครือ ทุกคนสามารถให้ความกระจ่างแก่ฉันได้หรือไม่ว่าทำไมในกรณีนี้