이것은 기본적인 질문 일 수 있습니다. 사용자 생성 cC++ 함수를 Rcpp에 전달하는 데 어려움을 겪고 있습니다. 설명서를 읽었을 때 XPtr (Link : http://gallery.rcpp.org/articles/passing-cpp-function-pointers/)에서 제공하는 SEXP 줄 바꿈을 사용해야하는 것 같습니다. 그러나이 작업을 올바르게 수행하는 방법은 아직 명확하지 않습니다. 다음에서는 C++ 방식의 testfun에서 인수로 funcPtrG 함수를 사용하려고합니다. 나는 다음과 같은 오류가 발생합니다 :rcpp에 사용자 생성 C++ 함수를 인수로 전달
#include <RcppArmadillo.h>
typedef double (*funcPtrG)(double theta, double gamma);
using namespace Rcpp;
// [[Rcpp::export]]
double GGfuncpp(double theta, double gamma){
double new_gamma = 0;
new_gamma = theta*gamma + R::rnorm(0,1)*0.0001;
return new_gamma;
}
// [[Rcpp::export]]
double testfun(funcPtrG fun2, double theta, double gamma){
double x= 0;
x = fun2(theta,gamma);
return x;
}
Error: cannot convert 'SEXP' to 'double (*)(double, double)' in initialization
내가 x = XPtr<funcPtr>fun2(theta,gamma)
퍼팅을 시도했지만 원하는 결과를 제공하지 않았다.
나는 그렇다! 실례합니다. 편집을하겠습니다. 내 원래 프로그램에서 모든 함수 앞에 // [[Rcpp :: export]]가 붙어 있습니다. – dleal