RServeプロジェクトを最初から作成するためのより詳細な手順は次のとおりです。
まず、RserveをインストールしてRで実行します。
- Rをインストールします
- CRANからパッケージRServeを追加します。
- Rタイプの場合: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を使用している人向け
REngine
<dependency>
<groupId>org.nuiton.thirdparty</groupId>
<artifactId>REngine</artifactId>
<version>1.7-3</version>
</dependency>
RServe
<dependency>
<groupId>org.rosuda.REngine</groupId>
<artifactId>Rserve</artifactId>
<version>1.8.1</version>
</dependency>