vector<double> Stock::getReturns(unsigned n){
vector<double> returnSelect;
for (int i=0;i<n;i++)
returnSelect.push_back(returns[i]);
return returnSelect;
}
double Stock::getMeanReturn(unsigned n){
double m=0;
vector<double> vec=getReturns(n);
for (int i=0;i<n;i++){
m+=vec[i];
}
m=m/n;
return m;
};
这些带有vector<double>
的代码完美无缺,但是当我用vector<double>
替换NumericVector
时,我可以在Eclipse中构建代码,但是当我运行它时它崩溃了。 NumericVector
似乎是个问题。
Rcpp::NumericVector Stock::getReturns(unsigned n){
Rcpp::NumericVector returnSelect;
for (int i=0;i<n;i++)
returnSelect.push_back(returns[i]);
return returnSelect;
}
double Stock::getMeanReturn(unsigned n){
double m;
Rcpp::NumericVector vec=getReturns(n);
m=mean(vec);
return m;
};
所以问题是为什么Eclipse无法处理NumericVector
?如果它不采用NumericVector
,还有其他方法可以使用Rcpp糖吗?
谢谢!
答案 0 :(得分:1)
一些事情:
首先,Rcpp sugar
仅适用于Rcpp类型,因为所有这些糖函数都是明确编程的 - 并且它们在Rcpp演示中被编程为R类型。
其次,您的初步示例是错误的。如果没有在某处定义/声明m+=vec[i];
,则无法执行vec
。它的大小是多少?这个空间是保留的吗?我觉得你很幸运。
第三,如果没有可重现的例子,请不要说'它崩溃'。
Eclipse与它无关,但您可能以错误的方式设置了环境。