编译此文件时,警告“无效转换... 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;
}
答案 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
希望这会对你有所帮助。