On 09/16/2009 09:40 AM, Abhijit Bera wrote:
So I should use the R parser?
If you want to parse R code, yes
Actually I'm trying to develop a JS interface for R. So I'm terribly confused with the design aspects. Won't parsing be slower?
sure. but I suspect SWX.RET[1:6,c("SBI,"SPI","SII")] is not the only expression you want your interface to deal with ?
in the code you sent, you acted as the parser, and I believe this has been slower than this:
> system.time( parse( text = 'SWX.RET[1:6,c("SBI", "SPI", "SII")]' ) ) user system elapsed 0.001 0.000 0.001 Do you want it to be faster than this ?
Is there a better way to do what I'm doing other than parsing?
>
Regards Abhijit On Wed, SSep 16, 2009 at 12:48 PM, Romain Francois <romain.franc...@dbmail.com <mailto:romain.franc...@dbmail.com>> wrote: 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