23

私のアプリケーションは、次のようなR操作を実行する必要があります。

m = matrix(sample(0:1,100, rep=T),ncol=10)

結果はJavaアプリケーションで利用できるはずです。

Rserveパッケージは、TCP / IPサーバーとして機能するため、Rを他の言語にブリッジします。Webサイトを読みましたが、Rserveを使用できる最も単純なアプリケーションを作成する方法がわかりません。

Rserveを使用してJavaからRコマンドを実行する単純なEclipseアプリケーションを作成するには、どのような手順が必要ですか?

4

4 に答える 4

21

ダウンロードセクションにRserveのバイナリバージョンがあります(www.rforge.net/Rserve/files/バージョンR2.13とWindowsXPがあるので、Windowsバイナリをダウンロードする必要があります:Rserve_0.6-8.zip(541.3kb、更新:2012年4月18日水曜日07:00:45))。R.DLLを含むディレクトリにファイルをコピーします。CRANからRserveをインストールした後

install.packages("Rserve")

Rで(私はRStudioを持っています-便利なもの:RStudio IDEをダウンロードしてください)。開始されたRserveはR内からです。入力するだけです。

library(Rserve)
Rserve()

タスクマネージャーのチェック-Rserve.exeを実行する必要があります。EclipseでJavaプロジェクトを作成した後、そのプロジェクトの下にlibというディレクトリを作成します。ここに2つのjarをRserveEngine.jarとREngine.jar(www.rforge.net/Rserve/files/)に貼り付けます。このjarファイルをjavaプロジェクトのプロパティに追加することを忘れないでください。新しいクラスコードの場合:

import org.rosuda.REngine.*;
import org.rosuda.REngine.Rserve.*;

public class rserveuseClass {
    public static void main(String[] args) throws RserveException {
        try {
            RConnection c = new RConnection();// make a new local connection on default port (6311)
            double d[] = c.eval("rnorm(10)").asDoubles();
            org.rosuda.REngine.REXP x0 = c.eval("R.version.string");
            System.out.println(x0.asString());
} catch (REngineException e) {
            //manipulation
        }       

    }
}
于 2012-04-19T05:08:07.747 に答える
15

RServeプロジェクトを最初から作成するためのより詳細な手順は次のとおりです。

まず、RserveをインストールしてRで実行します。

  1. Rをインストールします
  2. CRANからパッケージRServeを追加します。
  3. Rタイプの場合:install.packages( "Rserve")

リモートアクセスの場合:

  • ファイルの作成:/etc/Rserv.conf

以下を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を使用します。

  1. ここからRserveEngine.jarとREngine.jarをダウンロードします。
  2. EclipseでJavaプロジェクトを作成します。
  3. プロジェクトディレクトリの下にlibフォルダを作成します。(srcフォルダーと同じレベル)
  4. RserveEngine.jarとREngine.jarをlibフォルダーにコピーします。
  5. パスを構築するためのjarファイルの追加:手順
  6. パッケージを追加してからメインクラスを追加します。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>
于 2014-03-03T13:40:48.873 に答える
3

簡単なもの、タスクを分離しようとしています:

  1. Rserveは単独でインストールできます。そこから始めましょう。

  2. Rserveにはサンプルクライアントがあります。Javaサンプルを試してみてください。

  3. そこから、新しいプログラムを作成します。

  4. Eclipseは完全にオプションです。使用する必要はありません。これがもう1つの学習ステップである場合は、スキップすることを検討してください。1から3で問題がなければ、Eclipseでビルドの依存関係を表現する方法を学びます。

于 2012-04-18T19:27:45.940 に答える
2

JavaからRを呼び出すには、JRIとRServeの2つの方法があります。これは、WindowsでRJavaをセットアップするのに役立つプラグインです。より生産レベルのソリューションを探しているなら、Rserveはより良い目的を果たします。この例は、サンプルのRServeプログラムを実行する方法を示しています。RServeを使用している場合は、eval関数でコマンドを実行します

REXP m = c.eval("matrix(sample(0:1,100, rep=T),ncol=10)")

m(REXP)の変換に使用できるデフォルトのデータ構造がいくつかあります。

于 2013-06-29T18:12:16.577 に答える