2013-05-26 36 views
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>完美的作品,但是當我NumericVector取代vector<double>,我可以建立在Eclipse代碼,但它墜毀時,我跑了。 NumericVector似乎是問題所在。如何使用Rcpp糖函數(mean,var)與矢量<double>?

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糖嗎?

謝謝!

回答

1

有幾件事情:

  1. 首先,Rcpp sugar只RCPP類型的工作,因爲所有這些糖的功能是明確編程 - 他們被編程在他們RCPP呈現R型。

  2. 其次,你最初的例子是錯誤的。不能在沒有vec的地方定義/聲明m+=vec[i];。它的大小是多少?這個空間是否保留?我想你在那裏很幸運。

  3. 三,請不要聲明'它墜毀'沒有一個可重複的例子。 Eclipse與它沒有任何關係,但是你可能已經錯誤地設置了你的環境。