RCpp long long unsigned int错误问题

时间:2014-04-30 18:00:54

标签: r rcpp

我是RcppC++的新手。我正在尝试将以下R代码转换为RCpp。

library (compiler)
robzscore<-cmpfun(function(x) {
   byec <- sum(!is.na(x))
   byer <- rank(x, na.last="keep", ties.method="average") - 0.5
   as.data.frame(suppressWarnings(qnorm(byer/byec)), row.names=NULL)
})

我正在努力编写需要获取ranks的部分的语法。例如,这是我写的(在我使用cpp编译的单独的sourceCpp文件中)基于我在SO上找到的其他代码,作为rank(x,...)函数的等价物{ {1}}假设没有R s(并且没有处理关系):

NA

错误是:

  1. #include <Rcpp.h> #include <algorithm> #include <iostream> using namespace Rcpp; template <typename T> std::vector<size_t> sort_indexes(const std::vector<T> &v) { // initialize original index locations std::vector<size_t> idx(v.size()); for (size_t i=0; i!=idx.size();++i) idx[i]=i; // sort indexes based on comparing values in v std::sort(idx.begin(),idx.end(),[&v](size_t i1, size_t i2) {return v[i1]<v[i2];}); // return the values return idx; } // [[Rcpp::export]] NumericVector do_rank(NumericVector x) { std::vector<float> y=as<std::vector<float> >(x); return wrap(sort_indexes(y)); } - 后面是 - lambda expressions only available with -std=c++0x or -std=gnu++0x [enabled by default],位于我的代码显示为no matching function for call to 'sort(std::vector<long long unsigned int>::iterator, std::vector<long long unsigned int>::interator, sort_indexes(const std::vector<T> &) [ with T=float]::<lambda(long long unsigned int, long long u nsigned int)>)'的地方。

  2. std::sort(idx.begin(),...)~/R/win-library/3.0/Rcpp/include/Rcpp/internal/wrap.h

  3. 我怀疑主要问题是我在处理invalid conversion from 'long long unsigned int' to 'SEXP' [-fpermissive]的语法中犯了一些错误(将Rcpp转换为Rcpp数据结构,反之亦然。)

    有人可以帮我解释错误和/或可能是正确的方法吗?

    谢谢,

0 个答案:

没有答案