[Rcpp-devel] Could Rcpp class(like NumericVector) be implemented in c++?

Dirk Eddelbuettel edd at debian.org
Sun May 26 19:52:38 CEST 2013


On 26 May 2013 at 10:23, Qing Xia wrote:
| Dear All,
| 
| 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? 
| 
| 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.

Well -- if you cannot get Eclipse to build your code, stop using Eclipse.

Many of use just the command-line, or command-line in conjunction with an
editor like Emacs, others really like RStudio --- but you need to figure this
out, or else you won't have a chance to set Eclipse up right.

Dirk


| Thanks!
| 
| Qing
| 
| #include<Rcpp.h>
| using namespace Rcpp;
| 
| class Stock{
| private:
| NumericVector prices;
| NumericVector returns;
| void calcReturns();
| public:
| void loadPricesFromFile(const char *symbol);
| NumericVector getReturns(unsigned);
| NumericVector getPrices(unsigned);
| double getMeanReturn(unsigned);
| double getReturnStdDev(unsigned);
| void plotHistory(unsigned);
| };
| 
| void Stock::calcReturns(){
| for (int i=0;i<prices.size()-1;i++){
| returns.push_back(log(prices[i]/prices[i+1]));
| }
| };
| 
| NumericVector Stock::getPrices(unsigned n){
| NumericVector vec(n);
| for (int i=0;i<vec.size();i++){
| vec.push_back(prices[i]);
| }
| return vec;
| }
| 
| NumericVector Stock::getReturns(unsigned n){
| NumericVector vec(n);
| for (int i=0;i<vec.size();i++){
| vec.push_back(returns[i]);
| }
| return vec;
| }
| 
| double Stock::getMeanReturn(unsigned n){
| NumericVector vec(n);
| vec=getReturns(n);
| double m=mean(vec);
| return m;
| }
| 
| double Stock::getReturnStdDev(unsigned n){
| NumericVector vec(n);
| vec=getReturns(n);
| double m=var(vec);
| return m;
| }
| 
| void Stock::plotHistory(unsigned n){
| 
| }
| 
| void Stock::loadPricesFromFile(const char *symbol){
| for (int i=0;i<1000;i++){
| prices.push_back(1000-i);
| }
| calcReturns();
| }
| 
| int main(int argc,char *argv[]){
| Stock stock;
| stock.loadPricesFromFile("MSFT");
|     double m,sd;
|     unsigned num;
|     std::cout<<"Please enter the number for computation:";
|     std::cin>>num;
|     m=stock.getMeanReturn(num);
|     sd=stock.getReturnStdDev(num);
|     std::cout<<m<<"\t"<<sd<<std::endl;
|     return 0;
| }
| 
| ----------------------------------------------------------------------
| _______________________________________________
| Rcpp-devel mailing list
| Rcpp-devel at lists.r-forge.r-project.org
| https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com


More information about the Rcpp-devel mailing list