以下是从头开始创建 RServe 项目的一些更详细的说明:
首先安装并让 Rserve 在 R 中运行。
- 安装 R
- 从 CRAN 添加包 RServe。
- 在 R type 中: install.packages(“Rserve”)
对于远程访问:
将以下内容添加到 Rserv.conf
workdir /tmp/Rserv
remote enable
auth required
plaintext disable
port 6311
maxsendbuf 0 (size in kB, 0 means unlimited use)
在 R 中:运行以下命令
library(Rserve)
对于 Windows:
Rserve()
对于 Mac:
Rserve(args="--no-save")
Rserve 的实例现在在本地主机端口 6311 上运行。
下一步 创建一个 Rserve 项目 (我正在使用 eclipse)
为此,我将使用eclipse:
- 从此处下载 RserveEngine.jar 和 REngine.jar。
- 在 eclipse 中创建一个 java 项目。
- 在项目目录下创建一个 lib 文件夹。(与 src 文件夹的级别相同)
- 将 RserveEngine.jar 和 REngine.jar复制到 lib 文件夹中。
- 将 jar 添加到构建路径:说明
- 添加一个包,然后添加一个主类:称之为HelloWorldApp。
将此代码添加到类中
package com.sti.ai;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import org.rosuda.REngine.REXP;
import org.rosuda.REngine.REXPMismatchException;
import org.rosuda.REngine.Rserve.RConnection;
import org.rosuda.REngine.Rserve.RserveException;
public class HelloWorldApp {
public static void main(String[] args) throws RserveException, REXPMismatchException, FileNotFoundException, IOException {
RConnection c = new RConnection("<host/ip>", 6311);
if(c.isConnected()) {
System.out.println("Connected to RServe.");
if(c.needLogin()) {
System.out.println("Providing Login");
c.login("username", "password");
}
REXP x;
System.out.println("Reading script...");
File file = new File("<file location>");
try(BufferedReader br = new BufferedReader(new FileReader(file))) {
for(String line; (line = br.readLine()) != null; ) {
System.out.println(line);
x = c.eval(line); // evaluates line in R
System.out.println(x); // prints result
}
}
} else {
System.out.println("Rserve could not connect");
}
c.close();
System.out.println("Session Closed");
}
}
最后,运行HelloWorldApp.java
对于那些正在使用Maven的人
发动机
<dependency>
<groupId>org.nuiton.thirdparty</groupId>
<artifactId>REngine</artifactId>
<version>1.7-3</version>
</dependency>
断续器
<dependency>
<groupId>org.rosuda.REngine</groupId>
<artifactId>Rserve</artifactId>
<version>1.8.1</version>
</dependency>