如何在Rcpp上使用qnorm?

时间:2012-03-16 13:59:15

标签: r inline rcpp

require(inline)
func <- cxxfunction(, 'return Rcpp::wrap( qnorm(0.95,0.0,1.0) );' ,plugin="Rcpp")

错误:没有匹配函数来调用'qnorm5(double,int,int)'

require(inline)
func <- cxxfunction(, 'return Rcpp::wrap( qnorm(0.95, 0.0, 1.0, 1, 0) );' 
                   ,plugin="Rcpp")

错误:没有匹配函数来调用'qnorm5(double,double,double,int,int)'

require(inline)
code <-'
double a = qnorm(0.95, 0.0, 1.0);
return  Rcpp::wrap( a );
' 
func <- 
cxxfunction(, code ,plugin="Rcpp")
func()

错误:没有匹配函数来调用'qnorm5(double,double,double)'

如何在Rcpp上使用qnorm?

1 个答案:

答案 0 :(得分:7)

通过显示错误消息显示的meansd参数double - 所以试试这是一个完整的示例

library(inline)
f <- cxxfunction(signature(xs="numeric", plugin="Rcpp", body='
     Rcpp::NumericVector x(xs);
     return Rcpp::wrap(Rcpp::qnorm(x, 1.0, 0.0));
')

并查看示例和单元测试 - 我只是在单元测试文件runit.stats.R中查看了这个文件,其中包含许多针对这些统计'Rcpp sugar'函数的测试用例。

编辑于2012-11-14: 今天发布了Rcpp 0.10.0,如果您想使用C,可以调用签名R::qnorm(double, double, double, int, int)针对Rmath.h编写的代码。 Rcpp糖仍然为您提供矢量化版本。