我有一个用R编写的长函数,我想用Java调用这个函数。现在我使用JRI链接R和Java。如果我只使用eval(XX),我可以在java环境中从R获得返回。但由于我的功能很长,评估每一行都是不切实际的。如何使用toJava()
生成引用以及如何在java中使用它?
我用Google搜索了一个例子:在这里输入代码
.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)
我可以在R环境中创建Fref,但是如何在Java中引用它
例如:
R中的函数是:
f= function (){a=c(1,2,3); b=c(2,3,4); return (a+b)}
如何在Java中加载此函数来计算结果?