2016年1月5日火曜日

rJava : プログラミング(1)

rJavaの環境が整ったので(http://mizunolab.sist.ac.jp/2015/12/centosrjava.html)、サンプルを実行しながら勉強していく。

[サンプルプログラム : Rを使いJava側で出力]
サンプルはhttp://se.cite.ehime-u.ac.jp/wiki/index.php?R_rJavaを参考にしています。
 [JRITest01.java]
import org.rosuda.JRI.Rengine;
public class JRITest01 {
    public static void main(String[] args)
    {
        Rengine re = new Rengine( new String[]{"--no-save"}, false, null );
        System.out.println( re.eval("sample(10,5)") );
        re.end();
    }
}

まずRengine re = new Rengine( new String[]{"--no-save"}, false, null );でRengineクラスを見てみるとコンストラクタに
Rengine(java.lang.String[] args, boolean runMainLoop, RMainLoopCallbacks initialCallbacks) 
          create and start a new instance of R.
 とある。よくわからないが、おまじないとしておく。

 次に、re.eval("sample(10,5)")のところで
evalは
eval(java.lang.String s) 
          Parses and evaluates an R expression and returns the result.
 とあるのでevalは引数の文字列を評価してR側に渡す役割みたい。
sampleは
sample(x, size, replace = FALSE, prob = NULL)
 のように乱数を発生させる。
https://stat.ethz.ch/R-manual/R-devel/library/base/html/sample.html
ということで
 re.eval("sample(10,5)")
はsample(10,5)というコマンド文字列をevalがRに渡し実行している。

コンパイル実行してみると、下記になる。

ということでrengineインスタンス生成とevalの使い方がわかりました。

0 件のコメント:

コメントを投稿