R で記述された長い関数があり、この関数を Java で呼び出したいと考えています。現在、JRI を使用して R と Java をリンクしています。eval(XX) を使えば、Java 環境で R からのリターンを得ることができます。しかし、関数が長いため、各行を評価するのは非現実的です。参照を生成するために使用toJava()
する方法と、Java で使用する方法を教えてください。
私は例をグーグルで検索しました:ここにコードを入力してください
.jinit()
# requires JRI and REngine classes
.jengine(TRUE)
f <- function() { cat("Hello!\n"); 1 }
fref <- toJava(f)
# to use this in Java you would use something like:
# public static REXP call(REXPReference fn) throws REngineException, REXPMismatchException {
# return fn.getEngine().eval(new REXPLanguage(new RList(new REXP[] { fn })), null, false);
# }
# .jcall("Call","Lorg/rosuda/REngine/REXP;","call", fref)
Fref は R 環境で作成できますが、Java で参照するにはどうすればよいですか?
例: R の関数は :
f= function (){a=c(1,2,3); b=c(2,3,4); return (a+b)}
この関数を Java にロードして結果を計算するにはどうすればよいですか?