Package org.rosuda.JRI

Examples of org.rosuda.JRI.REXP


      /* High-level API - do not use RNI methods unless there is no other way
        to accomplish what you want */
      try {
        initiateRengine();
       
        REXP x;
        m_re.eval("library(statnet)");
        m_re.eval("library(igraph)");
               
        // push a boolean array
       
View Full Code Here


        }

    /* High-level API - do not use RNI methods unless there is no other way
      to accomplish what you want */
    try {
      REXP x;
      re.eval("data(iris)",false);
      System.out.println(x=re.eval("iris"));
      // generic vectors are RVector to accomodate names
      RVector v = x.asVector();
      if (v.getNames()!=null) {
        System.out.println("has names:");
        for (Enumeration e = v.getNames().elements() ; e.hasMoreElements() ;) {
          System.out.println(e.nextElement());
        }
      }
      // for compatibility with Rserve we allow casting of vectors to lists
      RList vl = x.asList();
      String[] k = vl.keys();
      if (k!=null) {
        System.out.println("and once again from the list:");
        int i=0; while (i<k.length) System.out.println(k[i++]);
      }     

      // get boolean array
      System.out.println(x=re.eval("iris[[1]]>mean(iris[[1]])"));
      // R knows about TRUE/FALSE/NA, so we cannot use boolean[] this way
      // instead, we use int[] which is more convenient (and what R uses internally anyway)
      int[] bi = x.asIntArray();
      {
          int i = 0; while (i<bi.length) { System.out.print(bi[i]==0?"F ":(bi[i]==1?"T ":"NA ")); i++; }
          System.out.println("");
      }
     
      // push a boolean array
      boolean by[] = { true, false, false };
      re.assign("bool", by);
      System.out.println(x=re.eval("bool"));
      // asBool returns the first element of the array as RBool
      // (mostly useful for boolean arrays of the length 1). is should return true
      System.out.println("isTRUE? "+x.asBool().isTRUE());

      // now for a real dotted-pair list:
      System.out.println(x=re.eval("pairlist(a=1,b='foo',c=1:5)"));
      RList l = x.asList();
      if (l!=null) {
        int i=0;
        String [] a = l.keys();
        System.out.println("Keys:");
        while (i<a.length) System.out.println(a[i++]);
        System.out.println("Contents:");
        i=0;
        while (i<a.length) System.out.println(l.at(i++));
      }
      System.out.println(re.eval("sqrt(36)"));
    } catch (Exception e) {
      System.out.println("EX:"+e);
      e.printStackTrace();
    }
   
    // Part 2 - low-level API - for illustration purposes only!
    //System.exit(0);
   
        // simple assignment like a<-"hello" (env=0 means use R_GlobalEnv)
        long xp1 = re.rniPutString("hello");
        re.rniAssign("a", xp1, 0);

        // Example: how to create a named list or data.frame
        double da[] = {1.2, 2.3, 4.5};
        double db[] = {1.4, 2.6, 4.2};
        long xp3 = re.rniPutDoubleArray(da);
        long xp4 = re.rniPutDoubleArray(db);
       
        // now build a list (generic vector is how that's called in R)
        long la[] = {xp3, xp4};
        long xp5 = re.rniPutVector(la);

        // now let's add names
        String sa[] = {"a","b"};
        long xp2 = re.rniPutStringArray(sa);
        re.rniSetAttr(xp5, "names", xp2);

        // ok, we have a proper list now
        // we could use assign and then eval "b<-data.frame(b)", but for now let's build it by hand:      
        String rn[] = {"1", "2", "3"};
        long xp7 = re.rniPutStringArray(rn);
        re.rniSetAttr(xp5, "row.names", xp7);
       
        long xp6 = re.rniPutString("data.frame");
        re.rniSetAttr(xp5, "class", xp6);
       
        // assign the whole thing to the "b" variable
        re.rniAssign("b", xp5, 0);
       
        {
            System.out.println("Parsing");
            long e=re.rniParse("data(iris)", 1);
            System.out.println("Result = "+e+", running eval");
            long r=re.rniEval(e, 0);
            System.out.println("Result = "+r+", building REXP");
            REXP x=new REXP(re, r);
            System.out.println("REXP result = "+x);
        }
        {
            System.out.println("Parsing");
            long e=re.rniParse("iris", 1);
            System.out.println("Result = "+e+", running eval");
            long r=re.rniEval(e, 0);
            System.out.println("Result = "+r+", building REXP");
            REXP x=new REXP(re, r);
            System.out.println("REXP result = "+x);
        }
        {
            System.out.println("Parsing");
            long e=re.rniParse("names(iris)", 1);
            System.out.println("Result = "+e+", running eval");
            long r=re.rniEval(e, 0);
            System.out.println("Result = "+r+", building REXP");
            REXP x=new REXP(re, r);
            System.out.println("REXP result = "+x);
            String s[]=x.asStringArray();
            if (s!=null) {
                int i=0; while (i<s.length) { System.out.println("["+i+"] \""+s[i]+"\""); i++; }
            }
        }
        {
            System.out.println("Parsing");
            long e=re.rniParse("rnorm(10)", 1);
            System.out.println("Result = "+e+", running eval");
            long r=re.rniEval(e, 0);
            System.out.println("Result = "+r+", building REXP");
            REXP x=new REXP(re, r);
            System.out.println("REXP result = "+x);
            double d[]=x.asDoubleArray();
            if (d!=null) {
                int i=0; while (i<d.length) { System.out.print(((i==0)?"":", ")+d[i]); i++; }
                System.out.println("");
            }
            System.out.println("");
        }
        {
            REXP x=re.eval("1:10");
            System.out.println("REXP result = "+x);
            int d[]=x.asIntArray();
            if (d!=null) {
                int i=0; while (i<d.length) { System.out.print(((i==0)?"":", ")+d[i]); i++; }
                System.out.println("");
            }
        }
View Full Code Here

        }

    /* High-level API - do not use RNI methods unless there is no other way
      to accomplish what you want */
    try {
      REXP x;
      re.eval("library(statnet)");
      re.eval("data(\"faux.magnolia.high\")", false);
      re.eval("fmh <- faux.magnolia.high", false);
      re.eval("plot(fmh,displayisolates = FALSE, vertex.col = \"Grade\", vertex.cex = 0.7)");
     
      re.eval("data(iris)",false);
      System.out.println(x=re.eval("iris"));
      // generic vectors are RVector to accomodate names
      RVector v = x.asVector();
      if (v.getNames()!=null) {
        System.out.println("has names:");
        for (Enumeration e = v.getNames().elements() ; e.hasMoreElements() ;) {
          System.out.println(e.nextElement());
        }
      }
      // for compatibility with Rserve we allow casting of vectors to lists
      RList vl = x.asList();
      String[] k = vl.keys();
      if (k!=null) {
        System.out.println("and once again from the list:");
        int i=0; while (i<k.length) System.out.println(k[i++]);
      }     

      // get boolean array
      System.out.println(x=re.eval("iris[[1]]>mean(iris[[1]])"));
      // R knows about TRUE/FALSE/NA, so we cannot use boolean[] this way
      // instead, we use int[] which is more convenient (and what R uses internally anyway)
      int[] bi = x.asIntArray();
      {
          int i = 0; while (i<bi.length) { System.out.print(bi[i]==0?"F ":(bi[i]==1?"T ":"NA ")); i++; }
          System.out.println("");
      }
     
      // push a boolean array
      boolean by[] = { true, false, false };
      re.assign("bool", by);
      System.out.println(x=re.eval("bool"));
      // asBool returns the first element of the array as RBool
      // (mostly useful for boolean arrays of the length 1). is should return true
      System.out.println("isTRUE? "+x.asBool().isTRUE());

      // now for a real dotted-pair list:
      System.out.println(x=re.eval("pairlist(a=1,b='foo',c=1:5)"));
      RList l = x.asList();
      if (l!=null) {
        int i=0;
        String [] a = l.keys();
        System.out.println("Keys:");
        while (i<a.length) System.out.println(a[i++]);
        System.out.println("Contents:");
        i=0;
        while (i<a.length) System.out.println(l.at(i++));
      }
      System.out.println(re.eval("sqrt(36)"));
    } catch (Exception e) {
      System.out.println("EX:"+e);
      e.printStackTrace();
    }
   
    // Part 2 - low-level API - for illustration purposes only!
    //System.exit(0);
   
        // simple assignment like a<-"hello" (env=0 means use R_GlobalEnv)
        long xp1 = re.rniPutString("hello");
        re.rniAssign("a", xp1, 0);

        // Example: how to create a named list or data.frame
        double da[] = {1.2, 2.3, 4.5};
        double db[] = {1.4, 2.6, 4.2};
        long xp3 = re.rniPutDoubleArray(da);
        long xp4 = re.rniPutDoubleArray(db);
       
        // now build a list (generic vector is how that's called in R)
        long la[] = {xp3, xp4};
        long xp5 = re.rniPutVector(la);

        // now let's add names
        String sa[] = {"a","b"};
        long xp2 = re.rniPutStringArray(sa);
        re.rniSetAttr(xp5, "names", xp2);

        // ok, we have a proper list now
        // we could use assign and then eval "b<-data.frame(b)", but for now let's build it by hand:      
        String rn[] = {"1", "2", "3"};
        long xp7 = re.rniPutStringArray(rn);
        re.rniSetAttr(xp5, "row.names", xp7);
       
        long xp6 = re.rniPutString("data.frame");
        re.rniSetAttr(xp5, "class", xp6);
       
        // assign the whole thing to the "b" variable
        re.rniAssign("b", xp5, 0);
       
        {
            System.out.println("Parsing");
            long e=re.rniParse("data(iris)", 1);
            System.out.println("Result = "+e+", running eval");
            long r=re.rniEval(e, 0);
            System.out.println("Result = "+r+", building REXP");
            REXP x=new REXP(re, r);
            System.out.println("REXP result = "+x);
        }
        {
            System.out.println("Parsing");
            long e=re.rniParse("iris", 1);
            System.out.println("Result = "+e+", running eval");
            long r=re.rniEval(e, 0);
            System.out.println("Result = "+r+", building REXP");
            REXP x=new REXP(re, r);
            System.out.println("REXP result = "+x);
        }
        {
            System.out.println("Parsing");
            long e=re.rniParse("names(iris)", 1);
            System.out.println("Result = "+e+", running eval");
            long r=re.rniEval(e, 0);
            System.out.println("Result = "+r+", building REXP");
            REXP x=new REXP(re, r);
            System.out.println("REXP result = "+x);
            String s[]=x.asStringArray();
            if (s!=null) {
                int i=0; while (i<s.length) { System.out.println("["+i+"] \""+s[i]+"\""); i++; }
            }
        }
        {
            System.out.println("Parsing");
            long e=re.rniParse("rnorm(10)", 1);
            System.out.println("Result = "+e+", running eval");
            long r=re.rniEval(e, 0);
            System.out.println("Result = "+r+", building REXP");
            REXP x=new REXP(re, r);
            System.out.println("REXP result = "+x);
            double d[]=x.asDoubleArray();
            if (d!=null) {
                int i=0; while (i<d.length) { System.out.print(((i==0)?"":", ")+d[i]); i++; }
                System.out.println("");
            }
            System.out.println("");
        }
        {
            REXP x=re.eval("1:10");
            System.out.println("REXP result = "+x);
            int d[]=x.asIntArray();
            if (d!=null) {
                int i=0; while (i<d.length) { System.out.print(((i==0)?"":", ")+d[i]); i++; }
                System.out.println("");
            }
        }
View Full Code Here

  }

  protected static REXP eval(String whatToEval, String errMsg)
  {
    callbacks.clearBuffer();
    REXP result = engine.eval(whatToEval);
    if (result == null)
      throw new IllegalArgumentException(errMsg+" : "+callbacks.getBuffer());
    return result;
  }
View Full Code Here

        {
          if (RViewer.getGraph(title) == null)
          {// create new graph
            RViewer.setNewGraphName(title);
            eval("JavaGD(\"aa\")","JavaGD() failed");
            REXP devNum = eval("dev.cur()","failed to do dev.cur");
           
            RViewer.getGraph(title).init(devNum.asInt()-1);
          }
          eval("dev.set("+(RViewer.getGraph(title).getDeviceNumber()+1)+")","failed to do dev.set for "+title);
          for(String cmd:dataToPlot)
            eval(cmd,"failed to run plot "+cmd);
        }
View Full Code Here

  }
 
  protected static REXP eval(String whatToEval, String errMsg)
  {
    callbacks.clearBuffer();
    REXP result = engine.eval(whatToEval);
    if (result == null)
      throw new IllegalArgumentException(errMsg+" : "+callbacks.getBuffer());
    return result;
  }
View Full Code Here

        {
          if (RViewer.getGraph(title) == null)
          {// create new graph
            RViewer.setNewGraphName(title);
            eval("JavaGD(\"aa\")","JavaGD() failed");
            REXP devNum =eval("dev.cur()","failed to do dev.cur");
           
            RViewer.getGraph(title).init(devNum.asInt()-1);
          }
          eval("dev.set("+(RViewer.getGraph(title).getDeviceNumber()+1)+")","failed to do dev.set for "+title);
          eval(dataToPlot,"failed to run plot "+dataToPlot);   
        }
      });
View Full Code Here

  }

  protected static REXP eval(String whatToEval, String errMsg)
  {
    callbacks.clearBuffer();
    REXP result = engine.eval(whatToEval);
    if (result == null)
      throw new IllegalArgumentException(errMsg+" : "+callbacks.getBuffer());
    return result;
  }
View Full Code Here

        {
          if (RViewer.getGraph(title) == null)
          {// create new graph
            RViewer.setNewGraphName(title);
            eval("JavaGD(\"aa\")","JavaGD() failed");
            REXP devNum = eval("dev.cur()","failed to do dev.cur");
           
            RViewer.getGraph(title).init(devNum.asInt()-1);
          }
          eval("dev.set("+(RViewer.getGraph(title).getDeviceNumber()+1)+")","failed to do dev.set for "+title);
          for(String cmd:dataToPlot)
            eval(cmd,"failed to run plot "+cmd);
        }
View Full Code Here

  }

  protected static REXP eval(String whatToEval, String errMsg)
  {
    callbacks.clearBuffer();
    REXP result = engine.eval(whatToEval);
    if (result == null)
      throw new IllegalArgumentException(errMsg+" : "+callbacks.getBuffer());
    return result;
  }
View Full Code Here

TOP

Related Classes of org.rosuda.JRI.REXP

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.