У меня есть функция C ++:
#include <RcppArmadilloExtensions/sample.h>
using namespace Rcpp;
IntegerVector fnGender(int item, bool replace, NumericVector vSegPop,
IntegerVector vLevelsGender, NumericMatrix mGender) {
RNGScope scope;
IntegerVector ret = RcppArmadillo::sample(vLevelsGender, vSegPop(item),
replace, mGender.row(item)) ;
return ret;
}
Я использую функцию RccpArmadillo :: sample вместо sample R).
Когда я загружаю функцию с помощью sourceCpp, я получаю следующую ошибку.
g++ -m64 -I"C:/Users/USER/DOCUME~1/R/R-31~1.1/include" -DNDEBUG -
I"C:/Users/USER/Documents/R/R-3.1.1/library/Rcpp/include" -
I"d:/RCompile/CRANpkg/extralibs64/local/include" -O2 -Wall -mtune=core2 -c Code.cpp -o Code.o
В духе сезона, вот ваш код с двумя изменениями, предложенными в комментариях, который прекрасно подходит для меня на Windows:
#include <RcppArmadilloExtensions/sample.h>
// [[Rcpp::depends(RcppArmadillo)]]
using namespace Rcpp;
// [[Rcpp::export]]
IntegerVector fnGender(int item, bool replace, NumericVector vSegPop,
IntegerVector vLevelsGender, NumericMatrix mGender) {
IntegerVector ret =
RcppArmadillo::sample(vLevelsGender, vSegPop(item),
replace, mGender.row(item)) ;
return ret;
}
Я удалил RNGScope scope;
поскольку используемая здесь структура сборки Rcpp автоматически добавляет его в любом случае.