sourceCpp()无法获取此文件

时间:2014-04-16 03:05:43

标签: c++ r rcpp

编译此文件时,警告“无效转换... const int”。有人可以告诉错误以及如何修复。感谢。

#include <Rcpp.h>
using namespace Rcpp;
//[[Rcpp::export]]
IntegerVector ats(SEXP p, SEXP rolsd, SEXP sig, SEXP b)
{
  Rcpp::NumericVector loc_p(p);
  Rcpp::NumericVector loc_rolsd(rolsd);
  Rcpp::IntegerVector signal(sig);
  int n=loc_p.size();
  int m=signal.size();
  float bb = Rcpp::as<float>(b);
  Rcpp::IntegerVector result[m];
  for(int j=0;j<m;j++)
  { 
    int i=0;
    float  ma=loc_p[j];
    while(loc_p[i+signal[j]] >= (1-loc_rolsd[i+signal[j]]*bb)*ma & i<=n-signal[j])
    {
      i=i+1;
      if(ma < loc_p[i+signal[j]]) ma = loc_p[i+signal[j]];
    }
    result[j]=i;
  }
  return result;
}

1 个答案:

答案 0 :(得分:1)

请检查您的while语句。

while(((loc_p[i+signal[j]]) >= ((1-loc_rolsd[i+signal[j]]*bb)*ma)) && (i<=n-signal[j]))
    {
      i=i+1;
      if(ma < loc_p[i+signal[j]])
         ma = loc_p[i+signal[j]];
    }

我认为你也必须查看这个陈述。

Rcpp::IntegerVector result[m];

虽然声明array需要Constant Value,但您需要这样做 声明为

Rcpp::IntegerVector result[10]; // where m should be any int const value 希望这会对你有所帮助。