R/Java

From QERM Wiki
Revision as of 22:17, 3 May 2013 by Chloe (Talk | contribs)
Jump to: navigation, search

How to call R from a Java program

Contents

Using JRI (from RJava)

The RJava package also allows calling Java from R.

Set up

  • In R, install the RJava package (necessary?)
  • The RJava package includes the JRI.jar, but to get JRIEngine.jar and REngine.jar, go to JRI files download
  • Add those 3 jars to your lib directory and classpath
  • Make sure the R_HOME environment variable is set
    • Type $R_HOME on the command line to see if it is set and what it is set to
    • In eclipse, you can add environment variables to the run configuration
    • On a mac, add this line to your .profile file (in the root of your user directory, so ~/.profile)
export R_HOME=/Library/Frameworks/R.framework/Resources
  • Add the native JRI library to the Java library path (either on the command line call to Java or as a VM argument in the eclipse run configuration)
-Djava.library.path=/Library/Frameworks/R.framework/Resources/library/rJava/jri/

Calling R

Here is a very short example. See the links below and the example directory for more.

// Start R 
Rengine re = new Rengine(new String[] { "--no-save" }, false, null); //specify '--save', '--no-save' or '--vanilla'
if (!re.waitForR())
{
  System.out.println("Cannot load R");
}
else
 {     
  // print a random number from uniform distribution
  System.out.println(re.eval("runif(1)").asDouble ());
       
   // close R
  re.end();
}


Helpful links

Other solutions

  • renjin this looks promising, a JVM-based interpreter for R, but still beta
  • Rserve more complicated client/server setup, so more useful for lots of processes needing R
  • Rcaller very simple, but looks clunky for doing anything more than a few lines in R
Personal tools