1

我正在使用 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");

...我的问题是我Rcpp在这个R文件(PATH_TO_FILE)中使用,在R中编译这个外部C++文件需要几秒钟。因此我想重用这个函数而不是在我执行时一直编译这个文件.runAndReturnResult(...).

R 文件如下所示:

library(Rcpp)
sourceCpp("/cppTest.cpp")

myfunc<- test(param)
{

    t<-cppTest(4) 
    return(t)
}

RCaller如果其他库能够做到这一点,有没有人知道如何使用或任何其他建议来实现这一点?

非常感谢您的帮助!在此先感谢,克里斯

4

1 回答 1

3

我不认为这是一个 Rcpp 问题。它按设计工作——您在 Java 中的部署可能会妨碍您。

R 代码的重用通常通过创建一个包来实现,该包可靠地允许您存储和重新加载目标代码。这就是(除其他外)包装的用途。

您实质上要求重新发明sourceCpp()也为您提供一揽子计划的好处。那不会发生。请使用包。

因此,这与嵌入 Java 应用程序无关。

于 2014-03-29T15:01:32.060 回答