追記(2015/2/18): 新しいの書いた.math/R 3.1.2 をJava 1.8.0_25 から使う (MacOSX 10.10.1 + Homebrew 0.9.5 + Eclipse 4.4.1)
追記(2009/10/6): rJavaに含まれたそうで,そのメモ.
RをJavaから使うのに色々あるみたいなんですがまぁ流れ流れてJRIに行き着きました.
でやり方メモ.
環境
・MacOS X 10.5.3 / Java 1.5.0_13
・Eclipse 3.2.2
(・R 2.7.0)
(・JRI 0.4-1)
0.Rを入れる.
> sudo port install R
2.7.0が入った.
1.JRIをdownload, configure, make, テスト
・JRIをdownloadして展開 (0.4-1)
・configureとmakeとテスト
> ./configure
> make
> ./run rtest
> ./run rtest2
2.必要なモノとコト
モノ
・src/JRI.jar
・src/libjri.jnilib
コト
・R_HOME=/opt/local/lib/R という環境設定
・LD_LIBRARY_PATH=${R_HOME}/bin:${R_HOME}/lib という環境設定
・既にLD_LIBRARY_PATHがあればLD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${R_HOME}/bin:${R_HOME}/lib
・Java実行時にjava.library.pathをlibjri.jnilibへ向けての設定.
・Javaコンパイル,実行時にclasspathにJRI.jarを含める設定.
3.試す.
3.1プロジェクトを作成
lib/JRI.jar, lib/libjri.jnilibを設置,lib/JRI.jarはプロジェクトに含めておく(説明を省きます).
3.2コード
Sample_Rクラスをつくってmainを書く.とりあえず動作させるだけなのでこんな感じ.
import org.rosuda.JRI.Rengine; public class Sample_R { public static void main(String[] args) { if (!Rengine.versionCheck()) { System.err .println("** Version mismatch - Java files don't match library version."); System.exit(1); } Rengine re = new Rengine(new String[]{"--no-save"}, false, null); if (!re.waitForR()) { System.out.println("Cannot load R"); return; } System.out.println(re.eval("sqrt(36)")); re.end(); } }
3.3実行環境の設定
・メニューバー Run/Open Run Dialog...を選択
・Sample_Rに関するものを選択,まずはArguments
VM argumentsとして'-Djava.library.path=./lib'を設定
・次にEnvironment
環境変数としてR_HOMEとLD_LIBRARY_PATHを設定する.LD_LIBRARY_PATHで同時に設定したR_HOMEが参照できなかった…のでとりあえず全部入力した.R_HOME=/opt/local/lib/R, LD_LIBRARY_PATH=/opt/local/lib/R/bin:/opt/local/lib/R/lib
4で実行.
[REAL* (6.0)]
とりあえず動いたけど.合ってるかしら?間違いがあればご指摘いただければ幸いです.
0 件のコメント:
コメントを投稿