无法使用标量

时间:2017-04-13 03:15:13

标签: r rcpp

我在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 ) ) ; }

有人可以帮我解决这个问题吗?谢谢!

1 个答案:

答案 0 :(得分:5)

问题有两个:

  1. factorial函数是VECTORIZED_MATH_1的一部分,需要Rcpp::NumericVector参数。
  2. 您错过了return声明。
  3. 使用:

    Rcpp::cppFunction(
        'Rcpp::NumericVector foo(double t, Rcpp::NumericVector k) {
          Rcpp::NumericVector x = t/factorial(k);
          return x;
        }')