我有一个用 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)
我可以在 R 环境中创建 Fref,但如何在 Java 中引用它
例如:R中的函数是:
f= function (){a=c(1,2,3); b=c(2,3,4); return (a+b)}
如何在Java中加载这个函数来计算结果?