Rcpp를 배우고 다음 두 가지 기능을 사용하고 있습니다. 두 번째 함수는 단순히 sum (log_gamma (x)) - log_gamma (sum (x))를 계산합니다. 여기서 x는 벡터입니다.Rcpp를 사용할 때 데이터 형식 변환 오류가 발생했습니다.
세 가지 데이터 형식 변환 오류가 반환되며 모두 해결할 수 없습니다. 누군가가 코드 수정을 도와 줄 수 있습니까? 감사.
file330c72cf6532.cpp:8:37: error: cannot convert 'Rcpp::sugar::Vectorized<Rf_lgammafn, true, Rcpp::Vector<14, Rcpp::PreserveStorage> >' to 'SEXP' in initialization
SEXP lgamma_x = lgamma(x);
^
file330c72cf6532.cpp:10:45: error: cannot convert 'SEXP' to 'double' in initialization
double up = sum_cpp(lgamma_x_vec);
^
file330c72cf6532.cpp:11:44: error: cannot convert 'Rcpp::sugar::Vectorized<Rf_lgammafn, true, Rcpp::Vector<14, Rcpp::PreserveStorage> >' to 'double' in initialization
double down = lgamma(sum_cpp(x));
^
cppFunction(
'double sum_cpp(NumericVector x){
double tmp = 0;
int n = x.size();
for(int j = 0; j<n; j++){
tmp = tmp + x[j];
}
return tmp;
}')
cppFunction('double LogB_cpp(NumericVector x){
Function sum_cpp("sum_cpp") ;
SEXP lgamma_x = lgamma(x);
NumericVector lgamma_x_vec(lgamma_x);
double up = sum_cpp(lgamma_x_vec);
double down = lgamma(sum_cpp(x));
return up - down;}')
감사합니다! 그것은 많은 의미가 있습니다. –