//http://weblog.dotjava.nl/
// 在R中运行install.packages('rJava',,'http://www.rforge.net/')
//在环境变量里面要配R_HOME C:\Program Files\R\R-2.10.0
//PATH里面配 C:\Program Files\R\R-2.10.0\bin
//PATH一定要设对
package com.wdf;
import java.io.*;
import java.awt.Frame;
import java.awt.FileDialog;
import java.util.Enumeration;
import org.rosuda.JRI.Rengine;
import org.rosuda.JRI.REXP;
import org.rosuda.JRI.RList;
import org.rosuda.JRI.RVector;
import org.rosuda.JRI.RMainLoopCallbacks;
class TextConsole implements RMainLoopCallbacks
{
public void rWriteConsole(Rengine re, String text, int oType) {
System.out.print("rWriteConsole");
}
public void rBusy(Rengine re, int which) {
System.out.println("rBusy("+which+")");
}
public String rReadConsole(Rengine re, String prompt, int addToHistory) {
System.out.print(prompt);
try {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s=br.readLine();
return (s==null||s.length()==0)?s:s+"\n";
} catch (Exception e) {
System.out.println("jriReadConsole exception: "+e.getMessage());
}
return null;
}
public void rShowMessage(Rengine re, String message) {
System.out.println("rShowMessage \""+message+"\"");
}
public String rChooseFile(Rengine re, int newFile) {
FileDialog fd = new FileDialog(new Frame(), (newFile==0)?"Select a file":"Select a new file", (newFile==0)?FileDialog.LOAD:FileDialog.SAVE);
fd.show();
String res=null;
if (fd.getDirectory()!=null) res=fd.getDirectory();
if (fd.getFile()!=null) res=(res==null)?fd.getFile():(res+fd.getFile());
return res;
}
public void rFlushConsole (Rengine re) {
}
public void rLoadHistory (Rengine re, String filename) {
}
public void rSaveHistory (Rengine re, String filename) {
}
}
public class rtest {
public static void main(String[] args) {
if (!Rengine.versionCheck()) {
System.err.println("** Version mismatch!");
System.exit(1);
}
System.out.println("Creating Rengine (with arguments)");
Rengine re=new Rengine(args, false, new TextConsole());
System.out.println("Rengine created, waiting for R");
if (!re.waitForR()) {
System.out.println("Cannot load R");
return;
}
try {
REXP x;
// re.eval("data(iris)",false);
//re.eval("contributors()");
//x=re.eval(arg0);
x=re.eval("eval(expression(3+2))");
Double d=x.asDouble();
//String str=x.getContent();
System.out.println(d.toString());
System.out.println(re.eval("sqrt(36)").asDouble());
System.out.println(re.eval("3+2").asDouble());
/*
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();
}
re.end();
System.out.println("end");
}
}
分享到:
相关推荐
### Java调用R语言的方法详解 #### JRI (Java/R Interface) **简介:** JRI是一种允许Java程序通过单线程方式与R进行交互的工具。它能够将R的动态库加载到Java环境中,并提供一系列Java API来实现R的功能。JRI支持...
Java调用R主要有以下几种方式: 1. **JRI (Java-R Interface)**:这是最直接的方式,通过R的嵌入式运行时环境(REngine)实现。JRI是R的C接口的Java封装,允许Java程序直接调用R函数。使用JRI,你需要在Java代码中...
在 Java 项目中,需要添加 Rsession 依赖,以便 Java 可以调用 R 语言。Rsession 依赖可以使用以下方式添加: com.yannrichet.Rsession:1.8.3 Java 调用 R 语言的基本指令 Java 调用 R 语言的基本指令包括: * ...
在Myeclipse工程中,使用java Application工程调用R服务接口的一个简单的例子,程序执行后会在D盘下生成一个test.jpg文件,具体使用方法参考http://blog.csdn.net/ryl219362/article/details/9449567
该资源是用Eclipse4.4 + jdk1.6(32位) + R3.2.3(32位)开发的,用Java通过JRI调用R的案例, 先启动R的计算引擎:Rengine Rengine re = new Rengine(new String[]{"--vanilla"},false,null); 然后,调用R里的rnorm()...
该资源是用Eclipse4.4 + jdk1.6(32位) +R3.2.3(位),开发的一个用Java通过JRI.jar来调用R语言的实例。在运行该代码之前,要在R里安装rJava包,即: install.packags("rJava") 该资料包含JRI.jar,当然,在R里安装完...
- 在开发过程中,首先确保R脚本本身无误,可以在RStudio中单独测试。 - Java端则需要确保能够正确调用R脚本,并返回预期的结果。 2. **性能优化**: - 注意RServe的内存管理,避免内存泄漏问题。 - 对于高并发...
### 使用Java调用R语言的关键知识点 #### 一、引言 在数据分析和统计领域,R语言因其强大的数据处理能力和丰富的统计分析包而备受青睐。然而,在企业级应用开发方面,Java则以其成熟稳定的特性占据主导地位。因此,...
整体上,本文通过介绍和比较不同的Java调用R脚本的方法,特别是强调了Rserve远程调用模式的优势,为开发者在需要集成Java与R语言时提供了有力的参考。通过Rserve,开发者可以更容易地将Java应用的强大功能与R语言在...
本文将详细讲解在Android Studio 3.0中如何实现C++调用Java以及Java调用C++的过程。 首先,我们需要在Android Studio项目中配置NDK(Native Development Kit),它是Android用于编写和编译C/C++代码的工具集。在...
Java调用R语言是一种常见的跨语言交互方式,特别是在数据分析和机器学习领域,因为R语言提供了丰富的统计和图形处理功能,而Java则具有强大的系统集成和企业应用开发能力。本研究报告探讨了两种主流的方法:通过...
本文将深入探讨如何在Android应用中通过Java接口调用OpenCV 2.4版本,以实现将图片转换为灰度图的功能。 首先,我们需要理解OpenCV的基本概念。OpenCV(Open Source Computer Vision Library)是一个跨平台的计算机...
Java调用JavaScript 使用`addJavascriptInterface()`方法暴露一个Java对象给JavaScript环境,这样JavaScript就可以调用这个对象的方法: ```java webView.addJavascriptInterface(new Object() { @...
总的来说,Java调用R软件能够结合两者的优点,如Java的稳定性和企业级支持,以及R的统计分析和数据可视化能力。这种互操作性对于大数据分析、机器学习等领域特别有用,因为可以将R的算法集成到Java构建的系统中,...
要使用JCO调用RFC,首先需要在Java项目中引入JCO库。这通常通过添加SAP JCo的jar文件到类路径来实现。然后,我们需要创建一个JCO连接实例,这个实例会连接到指定的SAP系统。 以下是一个基本的JCO调用RFC的步骤: 1...
### Linux环境下实现Java调用Windows环境下的Matlab函数 #### 一、所需条件及说明 为了实现在Linux环境中通过Java程序来调用Windows系统下的Matlab函数,首先需要确保满足以下条件: 1. **Windows环境下**: - ...
本文介绍了如何在Java程序中调用Matlab程序的方法,重点说明了使用matlabcontrol Java API来进行这种跨语言调用的步骤和注意事项。 首先,要了解Java调用Matlab方法时,Matlab的返回值类型可能会根据函数和Matlab...