我在R中定义了一个c ++函数,它是:
library(Rcpp)
cppFunction(
'double foo(double t, int k) {
double x = t/factorial(k);
}')
当我在R中运行此功能时,收到错误:
file59b051c6b334.cpp:7:25:错误:没有匹配函数来调用'factorial'
NumericVector x = t/factorial(k); ^~~~~~~~~
/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Rcpp/include/Rcpp/sugar/functions/math.h:59:19:
注意:候选函数不可行:没有已知的从'int'转换为 第一个参数的'SEXP'(又名'SEXPREC *')VECTORIZED_MATH_1(阶乘) ,:: Rcpp :: internal :: factorial)
/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Rcpp/include/Rcpp/sugar/block/Vectorized_Math.h:91:9:
注意:从宏'VECTORIZED_MATH_1'扩展
__NAME__( SEXP x){ return __NAME__( NumericVector( x ) ) ; }
有人可以帮我解决这个问题吗?谢谢!
答案 0 :(得分:5)
问题有两个:
factorial
函数是VECTORIZED_MATH_1
的一部分,需要Rcpp::NumericVector
参数。return
声明。使用:
Rcpp::cppFunction(
'Rcpp::NumericVector foo(double t, Rcpp::NumericVector k) {
Rcpp::NumericVector x = t/factorial(k);
return x;
}')