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

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to