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

Reply via email to