`
wangdf_jee
  • 浏览: 114361 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

在Java中调用R

阅读更多
//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语言的方法

    ### Java调用R语言的方法详解 #### JRI (Java/R Interface) **简介:** JRI是一种允许Java程序通过单线程方式与R进行交互的工具。它能够将R的动态库加载到Java环境中,并提供一系列Java API来实现R的功能。JRI支持...

    java调用R语言源码

    Java调用R主要有以下几种方式: 1. **JRI (Java-R Interface)**:这是最直接的方式,通过R的嵌入式运行时环境(REngine)实现。JRI是R的C接口的Java封装,允许Java程序直接调用R函数。使用JRI,你需要在Java代码中...

    Java-调用R语言和调用Python(前后端展示).doc

    在 Java 项目中,需要添加 Rsession 依赖,以便 Java 可以调用 R 语言。Rsession 依赖可以使用以下方式添加: com.yannrichet.Rsession:1.8.3 Java 调用 R 语言的基本指令 Java 调用 R 语言的基本指令包括: * ...

    Myeclipse 在java中调用R服务的简单例程

    在Myeclipse工程中,使用java Application工程调用R服务接口的一个简单的例子,程序执行后会在D盘下生成一个test.jpg文件,具体使用方法参考http://blog.csdn.net/ryl219362/article/details/9449567

    Java通过JRI调用R

    该资源是用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()...

    Java调用R语言的实例

    该资源是用Eclipse4.4 + jdk1.6(32位) +R3.2.3(位),开发的一个用Java通过JRI.jar来调用R语言的实例。在运行该代码之前,要在R里安装rJava包,即: install.packags("rJava") 该资料包含JRI.jar,当然,在R里安装完...

    java调用R语言实现数据挖掘

    - 在开发过程中,首先确保R脚本本身无误,可以在RStudio中单独测试。 - Java端则需要确保能够正确调用R脚本,并返回预期的结果。 2. **性能优化**: - 注意RServe的内存管理,避免内存泄漏问题。 - 对于高并发...

    Calling R from Java

    ### 使用Java调用R语言的关键知识点 #### 一、引言 在数据分析和统计领域,R语言因其强大的数据处理能力和丰富的统计分析包而备受青睐。然而,在企业级应用开发方面,Java则以其成熟稳定的特性占据主导地位。因此,...

    利用Rserve实现Java调用R脚本.pdf

    整体上,本文通过介绍和比较不同的Java调用R脚本的方法,特别是强调了Rserve远程调用模式的优势,为开发者在需要集成Java与R语言时提供了有力的参考。通过Rserve,开发者可以更容易地将Java应用的强大功能与R语言在...

    Android Studio3.0开发JNI流程------C++调用Java以及Java调用C++,C++/Java互相调用

    本文将详细讲解在Android Studio 3.0中如何实现C++调用Java以及Java调用C++的过程。 首先,我们需要在Android Studio项目中配置NDK(Native Development Kit),它是Android用于编写和编译C/C++代码的工具集。在...

    java调用R语言的研究报告.docx

    Java调用R语言是一种常见的跨语言交互方式,特别是在数据分析和机器学习领域,因为R语言提供了丰富的统计和图形处理功能,而Java则具有强大的系统集成和企业应用开发能力。本研究报告探讨了两种主流的方法:通过...

    Android通过Java接口调用OpenCV2.4示例

    本文将深入探讨如何在Android应用中通过Java接口调用OpenCV 2.4版本,以实现将图片转换为灰度图的功能。 首先,我们需要理解OpenCV的基本概念。OpenCV(Open Source Computer Vision Library)是一个跨平台的计算机...

    android使用webView实现java程序与js脚本的相互调用

    Java调用JavaScript 使用`addJavascriptInterface()`方法暴露一个Java对象给JavaScript环境,这样JavaScript就可以调用这个对象的方法: ```java webView.addJavascriptInterface(new Object() { @...

    Java 链接 R 软件的一个例子

    总的来说,Java调用R软件能够结合两者的优点,如Java的稳定性和企业级支持,以及R的统计分析和数据可视化能力。这种互操作性对于大数据分析、机器学习等领域特别有用,因为可以将R的算法集成到Java构建的系统中,...

    java使用jco调用rfc案例

    要使用JCO调用RFC,首先需要在Java项目中引入JCO库。这通常通过添加SAP JCo的jar文件到类路径来实现。然后,我们需要创建一个JCO连接实例,这个实例会连接到指定的SAP系统。 以下是一个基本的JCO调用RFC的步骤: 1...

    Linux环境下实现Java调用Windows环境下的Matlab函数

    ### Linux环境下实现Java调用Windows环境下的Matlab函数 #### 一、所需条件及说明 为了实现在Linux环境中通过Java程序来调用Windows系统下的Matlab函数,首先需要确保满足以下条件: 1. **Windows环境下**: - ...

    一种Java调用Matlab的方法简介.pdf

    本文介绍了如何在Java程序中调用Matlab程序的方法,重点说明了使用matlabcontrol Java API来进行这种跨语言调用的步骤和注意事项。 首先,要了解Java调用Matlab方法时,Matlab的返回值类型可能会根据函数和Matlab...

Global site tag (gtag.js) - Google Analytics