R で結果のリストを使用します。たとえば、次のリストがあります。
result <- list(a=c(1,2,3), b=3.6, c=5)
rcaller.runAndReturnResult(result) を呼び出した後、変数 a、b、c にアクセスできます。
double[] a = rcaller.getParser().getAsDoubleArray("a");
また
int c = rcaller.getParser().getAsIntegerArray("c")[0];
getNames() メソッドを使用すると、「結果」リストに含まれる名前も取得できます。
summary() を使用しても、何も変わりません。R で次のように lm() 呼び出しを行うとします。
ols <- lm (y ~ x + z, data=mydata)
その後
detailed <- summary(ols)
lm() の戻り値として、これもリストです。を使用して、このリストの要素にアクセスできます
double[] residuals = rcaller.getParser().getAsDoubleArray("residuals");
と
double rsquared = rcaller.getParser().getAsDoubleArray("r.squared")[0];
summary() の後は何も変わりません。コードに戻る
code.addRCode("data<-read.table(\""+ "/home/yo/Documents/Book1.csv"+ "\", header=TRUE,sep=\"\t\")");
caller.setRCode(code);
caller.runAndReturnResult("data");
リストを返さないので、代わりに入力できます
RCode code = new RCode();
code.addRCode("myresult <- list(res1=data$pH, res2=data$anotherVector)");
rcaller.setRCode(code);
caller.runAndReturnResult("myresult");
結局、
double[] pH = caller.getParser().getAsDoubleArray(pH);
pH変数を返します。
詳しくは公式ブログはこちら