当前位置:首页 » 编程语言 » java调用r

java调用r

发布时间: 2024-05-28 04:03:34

⑴ 怎么安装r语言中的rjava

WINDOWS版的配置
第一步:安装rJava和jdk

install.packages("rJava")
配置好java

第二步:设置环境变量 ,涉及java调用R(我的电脑右键-属性-高级设置-环境变量)

CLASSPATH=D:\soft\R-3.0.1\library\rJava\jri;
PATH=D:\soft\R-3.0.1\bin\x64
R_HOME=D:\soft\R-3.0.1

第三步:D:\soft\R-3.0.1\library\\rJava\jri的3个类包, 复制黏贴,
放到C:\Program Files\Java\jdk1.7.0_05\lib下面
JRIEngine.jar
JRI.jar
REngine.jar

即可实现 library(rJava)

⑵ java语言能调用R语言吗

可以。
(一) 在R里下载“Rserve”包,并安装
安装好后,
运行如下命令启动“Rserver”

> library(Rserve)
> Rserve()

Starting Rserve...
"D:\PROGRA~1\R\R-30~1.1\library\Rserve\libs\i386\Rserve.exe"
>

(二) 建立java工程,导入必要的包,写出测试用例
目录结构如下(标红色的是需要的):

Test.java 内容
package com.rTest;

import org.rosuda.REngine.REXP;
import org.rosuda.REngine.Rserve.RConnection;

public class Test {
public static void main(String[] args) {
try {
RConnection c = new RConnection();
REXP x = c.eval("R.version.string");
System.out.println(x.asString());
} catch (Exception e) {
e.printStackTrace();
}
}
}

运行即可
2.3 可能出现的错误
2.3.1 Connection refused: connect
org.rosuda.REngine.Rserve.RserveException: Cannot connect: Connection refused: connect
at org.rosuda.REngine.Rserve.RConnection.<init>(RConnection.java:88)
at org.rosuda.REngine.Rserve.RConnection.<init>(RConnection.java:60)
at org.rosuda.REngine.Rserve.RConnection.<init>(RConnection.java:44)
at com.rTest.Test.main(Test.java:9)

这是由于“Rserve” 服务器没有启动起来的原因,试试在R内运行如下语句

> library(Rserve)
> Rserve()

⑶ 怎样通过Java调用自己编写的R函数

Java调用R,就是使用JRI.jar中的Api,执行一条R语言命令,当然首先你要了解R语言的语法。x0dx0a1.JRI中主要的APIx0dx0aRengine R引擎,通过它进行R语言的启动、运算、画图、关闭等功能。x0dx0a一个银大线程只能实例化一次,推荐使用单例模式。x0dx0a实例化代码:x0dx0aRengine engine = new Rengine(null,false,null);x0dx0aRengine.versionCheck() //R版本校验,返回true:版本校验通过 返回false:版本校验未通过x0dx0aengine.waitForR() //R加载校验,返回true:加载成功 返回false:加载失败x0dx0aengine.end() /好脊/结束R,在后续没有调用R的情况下使用,否则R将退出,不能继续使用R。x0dx0ax0dx0a2.REXPx0dx0aR计算结果表达式x0dx0aREXP rexp = engine.eval_r(String str) //执行R命令,返回结果REXPx0dx0arexp.asInt() rexp.asDouble() rexp.as.. //将REXP转成java类型x0dx0aengine.assign(String name,double d) //定义R变量,name为R中变量的名字x0dx0ax0dx0a以上大概了解了JRI的基本API,下锋袜竖面写个简单的例子。x0dx0a//求n个数的最大值x0dx0aRengine engine = new Rengine(null,false,null);x0dx0aint[] arr = new int[]{-1,2,1,-3,5,4,-2};x0dx0aengine.assign("x",arr);x0dx0aREXP rexp = engine.eval_r("max(x)");x0dx0aint max = rexp.asInt();x0dx0aSystem.out.println(max);x0dx0aengine.end();

热点内容
比特币如何存储 发布:2024-10-18 15:31:36 浏览:614
云服务相比传统服务器有哪些优势 发布:2024-10-18 15:26:20 浏览:678
sql10进制转16进制 发布:2024-10-18 15:25:33 浏览:864
错误日志上传 发布:2024-10-18 15:08:45 浏览:269
三菱机械手编程 发布:2024-10-18 15:08:04 浏览:735
阿尔法儿童编程 发布:2024-10-18 14:59:12 浏览:770
生死时速2ftp 发布:2024-10-18 14:46:16 浏览:205
一座数据库 发布:2024-10-18 14:45:42 浏览:378
事件驱动python 发布:2024-10-18 14:39:54 浏览:844
java熔断 发布:2024-10-18 14:32:05 浏览:867