<div dir="ltr">Dear All,<div><br></div><div>I tried to use NumericVector in class declaration, Eclipse could compile the code, but could not run it (something to do with the R.dll). I tried replacing NumericVector with vector<double> and it worked with no problem. I want to use NumericVector so that I could use Rcpp sugar to compute the mean and variance. Could it possibly I get it wrong that sugar only take NumericVector? <br>
<div><br></div><div>I have configured Eclipse and I could ran the codes in the example folder perfectly. I've attached simplified version of my code. Any hints please? I've been stuck on this.</div><div><br></div>
<div><div>Thanks!</div><div><br></div><div>Qing</div><div><div><br></div><div><font size="1" face="verdana, sans-serif">#include<Rcpp.h></font></div><div><font size="1" face="verdana, sans-serif">using namespace Rcpp;</font></div>
<div><font size="1" face="verdana, sans-serif"><br></font></div><div><font size="1" face="verdana, sans-serif">class Stock{</font></div><div><font size="1" face="verdana, sans-serif">private:</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">  </span>NumericVector prices;</font></div>
<div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">        </span>NumericVector returns;</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">    </span>void calcReturns();</font></div>
<div><font size="1" face="verdana, sans-serif">public:</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre"> </span>void loadPricesFromFile(const char *symbol);</font></div><div>
<font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">   </span>NumericVector getReturns(unsigned);</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">       </span>NumericVector getPrices(unsigned);</font></div>
<div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">        </span>double getMeanReturn(unsigned);</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">   </span>double getReturnStdDev(unsigned);</font></div>
<div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">        </span>void plotHistory(unsigned);</font></div><div><font size="1" face="verdana, sans-serif">};</font></div><div><font size="1" face="verdana, sans-serif"><br>
</font></div><div><font size="1" face="verdana, sans-serif">void Stock::calcReturns(){</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">     </span>for (int i=0;i<prices.size()-1;i++){</font></div>
<div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">                </span>returns.push_back(log(prices[i]/prices[i+1]));</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">    </span>}</font></div>
<div><font size="1" face="verdana, sans-serif">};</font></div><div><font size="1" face="verdana, sans-serif"><br></font></div><div><font size="1" face="verdana, sans-serif">NumericVector Stock::getPrices(unsigned n){</font></div>
<div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">        </span>NumericVector vec(n);</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">     </span>for (int i=0;i<vec.size();i++){</font></div>
<div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">                </span>vec.push_back(prices[i]);</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre"> </span>}</font></div>
<div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">        </span>return vec;</font></div><div><font size="1" face="verdana, sans-serif">}</font></div><div><font size="1" face="verdana, sans-serif"><br>
</font></div><div><font size="1" face="verdana, sans-serif">NumericVector Stock::getReturns(unsigned n){</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">   </span>NumericVector vec(n);</font></div>
<div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">        </span>for (int i=0;i<vec.size();i++){</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">                </span>vec.push_back(returns[i]);</font></div>
<div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">        </span>}</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre"> </span>return vec;</font></div>
<div><font size="1" face="verdana, sans-serif">}</font></div><div><font size="1" face="verdana, sans-serif"><br></font></div><div><font size="1" face="verdana, sans-serif">double Stock::getMeanReturn(unsigned n){</font></div>
<div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">        </span>NumericVector vec(n);</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">     </span>vec=getReturns(n);</font></div>
<div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">        </span>double m=mean(vec);</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">       </span>return m;</font></div>
<div><font size="1" face="verdana, sans-serif">}</font></div><div><font size="1" face="verdana, sans-serif"><br></font></div><div><font size="1" face="verdana, sans-serif">double Stock::getReturnStdDev(unsigned n){</font></div>
<div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">        </span>NumericVector vec(n);</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">     </span>vec=getReturns(n);</font></div>
<div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">        </span>double m=var(vec);</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">        </span>return m;</font></div>
<div><font size="1" face="verdana, sans-serif">}</font></div><div><font size="1" face="verdana, sans-serif"><br></font></div><div><font size="1" face="verdana, sans-serif">void Stock::plotHistory(unsigned n){</font></div>
<div><font size="1" face="verdana, sans-serif"><br></font></div><div><font size="1" face="verdana, sans-serif">}</font></div><div><font size="1" face="verdana, sans-serif"><br></font></div><div><font size="1" face="verdana, sans-serif">void Stock::loadPricesFromFile(const char *symbol){</font></div>
<div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">        </span>for (int i=0;i<1000;i++){</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">              </span>prices.push_back(1000-i);</font></div>
<div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">        </span>}</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre"> </span>calcReturns();</font></div>
<div><font size="1" face="verdana, sans-serif">}</font></div><div><font size="1" face="verdana, sans-serif"><br></font></div><div><font size="1" face="verdana, sans-serif">int main(int argc,char *argv[]){</font></div><div>
<font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">   </span>Stock stock;</font></div><div><font size="1" face="verdana, sans-serif"><span class="" style="white-space:pre">      </span>stock.loadPricesFromFile("MSFT");</font></div>
<div><font size="1" face="verdana, sans-serif">    double m,sd;</font></div><div><font size="1" face="verdana, sans-serif">    unsigned num;</font></div><div><font size="1" face="verdana, sans-serif">    std::cout<<"Please enter the number for computation:";</font></div>
<div><font size="1" face="verdana, sans-serif">    std::cin>>num;</font></div><div><font size="1" face="verdana, sans-serif">    m=stock.getMeanReturn(num);</font></div><div><font size="1" face="verdana, sans-serif">    sd=stock.getReturnStdDev(num);</font></div>
<div><font size="1" face="verdana, sans-serif">    std::cout<<m<<"\t"<<sd<<std::endl;</font></div><div><font size="1" face="verdana, sans-serif">    return 0;</font></div><div><font size="1" face="verdana, sans-serif">}</font></div>
</div></div></div></div>