1
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?如果不需要,还有其他方法可以使用 Rcpp 糖NumericVector吗?

谢谢!

4

1 回答 1

1

一些东西:

  1. 首先,Rcpp sugar仅适用于 Rcpp 类型,因为所有这些糖函数都是显式编程的——并且它们在其 Rcpp 演示文稿中针对 R 类型进行了编程。

  2. 其次,你最初的例子是错误的。你不能没有m+=vec[i];vec某处定义/声明。它的大小是多少?空间是否预留?我想你在那里很幸运。

  3. 第三,请不要在没有可重现的例子的情况下说“它崩溃了”。

  4. Eclipse 与它无关,但您可能以错误的方式设置环境。

于 2013-05-26T12:50:17.123 回答