package r.test;
import java.io.FileOutputStream;
import org.rosuda.REngine.REXPMismatchException;
import org.rosuda.REngine.REngineException;
import org.rosuda.REngine.REXP;
import org.rosuda.REngine.Rserve.RConnection;
public class RTest {
public static byte[] boxplot(RConnection c, String dataAName, String dataBName) throws REXPMismatchException, REngineException{
String device = "jpeg";
REXP xp = c.parseAndEval("try(" + device + "('tmp.jpg',quality=90))");
c.parseAndEval("boxplot(" + dataAName + "," + dataBName + "); dev.off()");
xp = c.parseAndEval("r=readBin('tmp.jpg','raw',1024*1024); unlink('tmp.jpg');r");
return xp.asBytes();
}
public static void main(String[] args) throws REXPMismatchException, REngineException{
RConnection c = new RConnection();
REXP x = c.eval("R.version.string");
double[] arr = c.eval("rnorm(10, 3)").asDoubles();
for (double a : arr) {//循环打印变量arr
System.out.print(a + ", ");
}
try {
FileOutputStream fs = new FileOutputStream("E://r.jpeg");
fs.write(boxplot(c, "1, 2, 3", "2, 3, 4"));
fs.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(x.asString());
}
}
使用到的jar包 : JRI.jar JRIEngine.jar REngine.jar RserveEngine.jar
首先启动Rserve
1、 library(Rserve)
2、 Rserve()