From romain.francois at dbmail.com  Wed Sep 16 09:18:55 2009
From: romain.francois at dbmail.com (Romain Francois)
Date: Wed, 16 Sep 2009 09:18:55 +0200
Subject: [Rd] I want to get a reference to this time series object
In-Reply-To: <fc212e850909160002l7fc94109l83333f0d00b350ff@mail.gmail.com>
References: <fc212e850909160002l7fc94109l83333f0d00b350ff@mail.gmail.com>
Message-ID: <4AB0915F.3040100@dbmail.com>

Hi,

Luckily, R has its own parser, so you don't have to reimplement it. Just 
parse your string 'SWX.RET[1:6,c("SBI,"SPI","SII")]' and eval the parsed 
expression(s). The R_ParseVector function will help you.

Romain

On 09/16/2009 09:02 AM, Abhijit Bera wrote:
>
> I'm trying to get a reference to this object in C
>
> SWX.RET[1:6,c("SBI,"SPI","SII")]
>
> While i am able to access and use a plain SWX.RET object, I'm getting
> confused on how to create an object with the array subscripts like above.
>
> Here is what I tried to do. It doesn't work because "[" is obviously not an
> operation or function on SWX.RET. So how do I get a reference to this
> object?
>
> #include<stdio.h>
> #include<R.h>
> #include<Rinternals.h>
> #include<Rdefines.h>
> #include<Rembedded.h>
>
> int main(int argc, char** argv)
> {
>
>      SEXP e,c,portSpec,portData,portConstr,portVal,tsAssets;
>      int errorOccurred,nx,ny,i,j;
>      double *v;
>      const char *x,*y;
>
>      Rf_initEmbeddedR(argc, argv);
>
>      // loading fPortfolio
>      PROTECT(e = lang2(install("library"), mkString("fPortfolio")));
>      R_tryEval(e, R_GlobalEnv, NULL);
>      UNPROTECT(1);
>
>
>      // creating a default portfolioSpec object
>      PROTECT(e=lang1(install("portfolioSpec")));
>      PROTECT(portSpec=R_tryEval(e,R_GlobalEnv, NULL));
>
>      // creating a portfolioData object
>
>
> PROTECT(e=lang4(install("c"),mkString("SBI"),mkString("SPI"),mkString("SII")));
>      PROTECT(c=R_tryEval(e,R_GlobalEnv,NULL));
>
>      PROTECT(e=lang3(install("["),install("SWX.RET"),c));
>      PROTECT(portData=R_tryEval(e,R_GlobalEnv,NULL));
>
>      PROTECT(e=lang2(install("print"),portData));
>      R_tryEval(e,R_GlobalEnv,NULL);
>
>
>      UNPROTECT(3);
>
>      Rf_endEmbeddedR(0);
>
>      return 0;
> }

-- 
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
|- http://tr.im/yw8E : New R package : sos
|- http://tr.im/y8y0 : search the graph gallery from R
`- http://tr.im/y8wY : new R package : ant



[Rd] I want to get a reference to this time series object
Romain Francois