Прошу прощения, если этот вопрос довольно глупый, поскольку я новичок в Rcpp. Я создал пакет из Rcpp, но когда я его установил, я обнаружил, что все функции, связанные с Rcpp, будут возвращать следующий тип сообщения об ошибке: Ошибка в .Call (‹указатель: 0x0›, M): значение NULL, переданное как адрес символа
Вот пример:
getEigenValue.cpp
#include <RcppArmadillo.h>
#include <Rcpp.h>
// [[Rcpp::depends("RcppArmadillo")]]
// [[Rcpp::export]]
arma::vec getEigenValue(arma::mat M) {
arma::vec eigval;
arma::mat eigvec;
eig_sym(eigval, eigvec, M);
return eigval;
};
RcppExports.cpp
// getEigenValue
arma::vec getEigenValue(arma::mat M);
RcppExport SEXP _mypackage_getEigenValue(SEXP MSEXP) {
BEGIN_RCPP
Rcpp::RObject rcpp_result_gen;
Rcpp::RNGScope rcpp_rngScope_gen;
Rcpp::traits::input_parameter< arma::mat >::type M(MSEXP);
rcpp_result_gen = Rcpp::wrap(getEigenValue(M));
return rcpp_result_gen;
END_RCPP
}
RcppExports.R
getEigenValue <- function(M) {
.Call(`_mypackage_getEigenValue`, M)
}
ОПИСАНИЕ
Depends: Rcpp
LinkingTo: Rcpp, RcppArmadillo
Все функции Rcpp имеют такую ошибку, но с ними будет все в порядке, если я просто буду использовать sourceCpp (./ src / getEigenValue.cpp) вместо использования пакета.
Большое тебе спасибо!