c – 如何处理R到Rcpp中的列表

c – 如何处理R到Rcpp中的列表,第1张

概述我在R中有一个列表,其中x <-list(c(1,2,3),c(4,5),c(5,5),c(6)).我想将列表输入到Rcpp,并将它们作为平均向量c(2,4.5,5,6)返回. 我不知道如何处理Rcpp中的列表.我收到一条错误消息,有人可以检查我的代码吗? library(inline)fx = cxxfunction(signature(x='List'), body = ' Rc 我在R中有一个列表,其中x <-List(c(1,2,3),c(4,5),c(5,c(6)).我想将列表输入到Rcpp,并将它们作为平均向量c(2,4.5,5,6)返回. 我不知道如何处理Rcpp中的列表.我收到一条错误消息,有人可以检查我的代码吗?
library(inline)fx = cxxfunction(signature(x='List'),body = '    Rcpp::List xList(x);    int n = xList.size();    double res[n];    for(int i=0; i<n; i++) {        Rcpp NumericVector y(xList[i]);        int m=y.size();        res[i]=0;        for(int j=0; j<m; j++){            res[i]=res[i]+y[j]          }    }  return(wrap(res));',plugin='Rcpp')x<-List(c(1,c(6))fx(x)
解决方法@H_301_6@ 这里有几个小错误:

>两个语法错误:您需要R的Rcpp :: NumericVector,并且在最后一个循环中缺少一个分号.
>对C有一个误会:你需要像std :: vector< double> RES(n)的;因为n在编译时不知道.
>你在实例化你的向量从表中太激进/乐观,我在两个语句中做到这一点.

此版本的作品:

R> fx <- cxxfunction(signature(x='List'),plugin='Rcpp',body = '  +     Rcpp::List xList(x); +     int n = xList.size(); +     std::vector<double> res(n);   +                                 +     for(int i=0; i<n; i++) {     +         SEXP ll = xList[i]; +         Rcpp::NumericVector y(ll);  +         int m=y.size();   +         res[i]=0;         +         for(int j=0; j<m; j++){     +             res[i]=res[i]+y[j]; +         }    +     } +       +   return(Rcpp::wrap(res));    + ')  R> x<-List(c(1,c(6)) R> fx(x)[1]  6  9 10  6       R>

编辑:这是一个更加惯用的一个版本:

fx <- cxxfunction(signature(x='List'),body = '    Rcpp::List xList(x);    int n = xList.size();    Rcpp::NumericVector res(n);    for(int i=0; i<n; i++) {        SEXP ll = xList[i];        Rcpp::NumericVector y(ll);        for(int j=0; j<y.size(); j++){            res[i] += y[j];        }    }    return(res);')
总结

以上是内存溢出为你收集整理的c – 如何处理R到Rcpp中的列表全部内容,希望文章能够帮你解决c – 如何处理R到Rcpp中的列表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1248926.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存