統計処理ソフトウェアRをEclipseでJavaから使う
Rとは
- 統計用途に特化されたオープンソースのプログラミング言語。
- 数多くの統計パッケージが無償で公開されている
- 欠点は、GUIが乏しかったり、大きすぎるデータ処理は難しい点
Javaから使うために
- rJavaというパッケージをRにインストールする。
install.packages('rJava')
- ダウンロード元を聞かれるので、適当に一つ選ぶ。(日本ならtsukubaとか)
環境変数の設定
- マイコンピュータを右クリックし、properties
- advanced system settingsをクリックし、advancedタブ下にあるEnviroment variablesをクリック
- 以下を参考に環境変数を設定
R_HOME: C:\R\R-2.13.0
PATH: %R_HOME%\bin\i386かx64 (使っているR.dllがあるところ)
R_DOC_DIR: %R_HOME%\doc
R_INCLUDE_DIR: %R_HOME%\include
R_SHARE_DIR: %R_HOME%\share
Eclipseの設定
- Eclipseを管理者権限で起動。
- File -> new -> Java Projectで、プロジェクト名を指定してnext
- LibrariesのタブでAdd External Jarsで、先ほどインストールしたパッケージの中からIRI.jarを選択しFinish
- 場所:インストールフォルダ\R-2.13.0\library\rJava\jri\IRI.jar
- 作成したプロジェクトにC:\R\R-2.13.0\library\rJava\jriにあるjri.dllをコピー。
テスト(こちらのコードを改変)
- JavaプログラムをEclipseで実行して、コンソールからRのコードを入力、実行
package jritest; import java.util.Scanner; import org.rosuda.JRI.REXP; import org.rosuda.JRI.Rengine; import org.rosuda.JRI.RMainLoopCallbacks; public class nlr { static void print(String s) { System.err.println(s); } static void eval(Rengine r, String s) { r.eval(s, false); } public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); String input; if (!Rengine.versionCheck()) { System.err.println("** Version mismatch - Java files don't match library version."); System.exit(1); } print("creating Rengine"); Rengine re = new Rengine(args, false, null); print("Rengine created, waiting for R"); // the engine creates R is a new thread, so we should wait until it's // ready if (!re.waitForR()) { System.out.println("Cannot load R"); return; } print("R is running"); print("Enter command for R (exit by typing \"end\")"); while(true){ input = stdIn.nextLine(); if(input.equals("end")) break; System.out.println(re.eval(input)); } print("stopping Rengine"); re.end(); // stop the Rengine return; } }
- 入力例
data(iris) pdf('/tmp/graph.pdf') print(stripchart(iris[, 1:4], method = 'stack', pch = 16, cex = 0.4, offset = 0.6)) dev.off()
- プロジェクトのフォルダにtmpフォルダが生成され、その中に、graph.pdfができる。
参考
- Java R Interface (JRI) を用い 統計解析環境 R を Java から使用する (hamadakoichi blog)
- Connecting to R from Java (NetLogger Blog)