Интеграция Java-R? - PullRequest
       22

Интеграция Java-R?

53 голосов
/ 17 сентября 2011

У меня есть приложение Java, которое должно выполнить частичную регрессию наименьших квадратов.Казалось бы, нет реализации Java на PLSR.В какой-то момент у Weka могло быть что-то подобное, но его больше нет в API.С другой стороны, я нашел хорошую реализацию R, которая имеет дополнительный бонус.Его использовали люди, чей результат я хочу воспроизвести, что означает, что меньше шансов, что что-то пойдет не так из-за различий в способах реализации PLSR.и простой в использовании) пакет, позволяющий Java вызывать R, передавать в функцию некоторые параметры и считывать результаты?Мой другой вариант - иметь Java Process R в Process, а затем отслеживать его.Данные будут прочитаны и записаны на диск.Какой из двух вы бы порекомендовали?Я упускаю очевидный третий вариант?

Ответы [ 8 ]

49 голосов
/ 17 сентября 2011

В прошлом я успешно использовал две альтернативы.

JRI

  • Плюсы : вероятнолучшая производительность.
  • Минусы : необходимо настроить некоторые переменные и библиотеки среды, отличающиеся в Win / UNIX.

RServe

  • Плюсы : прост в настройке, вам не нужно инициализировать R или связываться с какой-либо библиотекой R, можно запускать на другом компьютере.
  • Минусы : на основе TCP / IP (сервер работает), нет обратных вызовов от R.

Другие альтернативы Я никогда не использовал: RCaller

10 голосов
/ 17 сентября 2011

Была работа Дункана Темпл Лэнг: http://rss.acs.unt.edu/Rdoc/library/SJava/Docs/RFromJava.pdf.

Мое предположение относительно наиболее надежного решения было бы JGR . Разработчики JGR имеют список рассылки, Stats-Rosuda , а Архив рассылки указывает, что список остается активным по состоянию на 2013 год.

Существует также код, который был добавлен в Googlecode , с примером здесь: http://stdioe.blogspot.com/2011/07/rcaller-20-calling-r-from-java.html

8 голосов
/ 22 октября 2013

Это старый вопрос ... но для тех, кто просматривает здесь, который все еще заинтересован: я написал статью в блоге, которая предоставляет подробный пример того, как использовать JRI / rjava (мост на основе JNI) для таких вещей(инструкции ориентированы на среду разработки Linux).Я также сравниваю и противопоставляю альтернативные подходы к выполнению «математических» вещей, обращаясь к R и аналогичным структурам.

URL> http://buildlackey.com/integrating-r-and-java-with-jrirjava-a-jni-based-bridge/

6 голосов
/ 15 июля 2015

Renjin - это альтернатива, которая позволяет не только интегрировать множество пакетов R, но и легко взаимодействовать между Java и R через объекты:

http://www.renjin.org/

3 голосов
/ 13 мая 2015

Кажется, это старый вопрос. Однако Rserve и rJava - это два хороших пакета для интеграции R с Java. Следующие блоги объясняют использование обеих этих библиотек.

Для rJava: http://www.codophile.com/how-to-integrate-r-with-java-using-rjava/

Для резервов: http://www.codophile.com/how-to-integrate-r-with-java-using-rserve/

Надеюсь, это поможет.

3 голосов
/ 05 января 2013

JRI имеет как низкоуровневый, так и высокоуровневый интерфейс для вызова R из Java. Существует плагин eclipse, который помогает в настройке среды R Java на http://www.studytrails.com/RJava-Eclipse-Plugin/.

1 голос
/ 11 октября 2018

FastR - это реализация на основе GraalVM R. Встраивание его в приложение JVM так же просто, как:

Context ctx = Context.newBuilder("R").allowAllAccess(true).build();
ctx.eval("R", "sum").execute(new int[] {1,2,3});

Подробнее в этой статье:https://medium.com/graalvm/faster-r-with-fastr-4b8db0e0dceb

1 голос
/ 17 сентября 2011

Некоторое время назад я испытывал аналогичные потребности и тестировал несколько интерфейсов для R. Один из них, который я нашел наилучшим для моих нужд (windows, c #), был Rserve , который, как я считаю, написанДжава.Единственное, что меня беспокоит, это то, что он не был 64-битным.Я использовал простой клиент, написанный на c #, и он работал очень хорошо.Я уверен, что клиент Java намного лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...