Java RCaller повторно использовать функцию

1

Я использую RCaller для выполнения R файла на Java.

В принципе, это выглядит так:

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), и для компиляции этого внешнего файла C++ в R требуется несколько секунд. Поэтому я хочу повторно использовать эту функцию, а не компилировать этот файл все время, когда я выполняю .runAndReturnResult(...).

Файл R выглядит так:

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

myfunc<- test(param)
{

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

Кто-нибудь есть идея, как достичь этого, используя RCaller или любые другие предложения в случае других библиотек, которые способны на это?

Помощь очень ценится! Спасибо заранее, Крис

Теги:
performance
rcpp
compilation
rcaller

1 ответ

3
Лучший ответ

Я не рассматриваю это как проблему Rcpp. Он работает так, как было разработано - ваше развертывание внутри Java может помешать вам.

Повторное использование кода R обычно достигается путем создания пакета, который надежно позволяет хранить и перезагружать объектный код. Это (между прочим), для чего нужен пакет.

Вы в основном попросите sourceCpp() также дать вам преимущества пакета. Этого не произойдет. Пожалуйста, используйте пакет.

И с этим это не имеет ничего общего с вложением внутри приложения Java.

  • 0
    Спасибо за ваш быстрый ответ. Не могли бы вы объяснить, что вы имеете в виду, use a package ? Я просто Java-разработчик, который получил R-скрипт ...: / / Некоторые дополнительные подсказки или ссылки? Спасибо вам большое!
  • 0
    Понял .. Я думаю ... stackoverflow.com/questions/17149295/… Спасибо! :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню