我在R中定义了一个c ++函数,它是:
library(Rcpp)
cppFunction(
'double foo(double t, int k) {
double x = t/factorial(k);
}')
Run Code Online (Sandbox Code Playgroud)
当我在R中运行此函数时,收到错误:
file59b051c6b334.cpp:7:25:错误:没有匹配函数来调用'factorial'
Run Code Online (Sandbox Code Playgroud)NumericVector x = t/factorial(k); ^~~~~~~~~/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Rcpp/include/Rcpp/sugar/functions/math.h:59:19:
注意:候选函数并不可行:没有已知的转换,从"诠释"到"SEXP"(又名"SEXPREC*")的第一个参数VECTORIZED_MATH_1(阶乘,:: RCPP ::内部::阶乘)
/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Rcpp/include/Rcpp/sugar/block/Vectorized_Math.h:91:9:
注意:从宏'VECTORIZED_MATH_1'扩展
Run Code Online (Sandbox Code Playgroud)__NAME__( SEXP x){ return __NAME__( NumericVector( x ) ) ; }
有人可以帮我解决这个问题吗?谢谢!
问题有两个:
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;
}')
Run Code Online (Sandbox Code Playgroud)