RCPP函数无法编译

时间:2018-11-16 21:29:19

标签: c++ r function rcpp

我是一个试图运行以下功能的rcpp菜鸟,它需要r命令pt来计算t分布。

 com=cppFunction("

        NumericVector comp(NumericVector x, NumericVector y) {
        int m=0;
        int n=0;
        float sp=0;
        float tstat=0;
        float ye ;

        m=x.size();
        n=y.size();
        sp=sqrt(((m-1)*pow(sd(x),2) + (n-1)*pow(sd(y),2))/ (m+n-2));
        tstat= (mean(x) - mean(y)) / (sp*sqrt(1/m + 1/n));
        ye= Rcpp::pt( abs(tstat), n+m-2);
            }")

运行代码时,我有一个由las行生成的错误(我想Rcpp ::正在生成错误,但不知道如何解决)。

错误:

 Error in sourceCpp(code = code, env = env, rebuild = rebuild, cacheDir = 
 cacheDir,  : 
 Error 1 occurred building shared library.

有什么解决方法的想法吗?

版本:我已根据您的评论解决了该问题。谢谢!这是新代码。

 com=cppFunction("

   #include <Rcpp.h>

        float comp(NumericVector x, NumericVector y) {
        int m=0;
        int n=0;
        double sp=0;
        double tstat=0;
        double ye ;

        m=x.size();
        n=y.size();
        sp=sqrt(((m-1)*pow(sd(x),2) + (n-1)*pow(sd(y),2))/ (m+n-2));
        tstat= (mean(x) - mean(y)) / (sp*sqrt(1/m + 1/n));
        return 2*(1- R::pt( abs(tstat), n+m-2,1,0));
            }")

0 个答案:

没有答案