我使用RCaller来执行Java中的R文件。
基本上,它看起来像这样:
RCaller caller = new RCaller();
RCode code = new RCode();
caller.setRscriptExecutable(PATH_TO_EXECUTABLE);
caller.cleanRCode();
code.R_source(PATH_TO_FILE);
code.addRCode("result<-test('" + param + "')");
caller.setRCode(code);
caller.runAndReturnResult("result");
...我的问题是我在这个R文件(Rcpp
)中使用PATH_TO_FILE
并且在R中编译这个外部C ++文件需要几秒钟。所以我想要重用该函数,而不是在我执行.runAndReturnResult(...)
时一直编译该文件。
R文件如下所示:
library(Rcpp)
sourceCpp("/cppTest.cpp")
myfunc<- test(param)
{
t<-cppTest(4)
return(t)
}
有没有人知道如何使用RCaller
或任何其他能够实现此功能的库的建议来实现此目的?
非常感谢帮助! 提前致谢, 克里斯
答案 0 :(得分:3)
我不认为这是一个Rcpp问题。它按设计工作 - 您在Java中的部署可能会妨碍您。
重复使用R代码通常是通过创建一个可靠地允许您存储和重新加载目标代码的包来实现的。这是(除其他事项外)包的用途。
您基本上要求重新发明sourceCpp()
,以便为您提供套餐的好处。这不会发生。请使用包裹。
然后,这与嵌入Java应用程序无关。