Интеграция Java и R?
У меня есть приложение на Java, которому необходимо выполнить регрессию на основе частичных наименьших квадратов (PLSR). Похоже, что в Java нет реализаций PLSR. Weka могла бы предложить что-то подобное в прошлом, но сейчас это отсутствует в API. С другой стороны, я нашел хорошую реализацию на R, которая имеет дополнительное преимущество: ее использовали те, чьи результаты я хочу воспроизвести, что означает меньшую вероятность возникновения ошибок из-за различий в реализации PLSR.
Вопрос в том, существует ли достаточный (и простой в использовании) пакет, который позволяет Java вызывать R, передавать параметры в функцию и считывать результаты? Моя другая альтернатива — запустить R как отдельный процесс и затем его мониторить. Данные будут записываться и считываться с диска. Какой из двух подходов вы бы порекомендовали? Может быть, я упускаю очевидный третий вариант?
4 ответ(ов)
JRI предлагает как интерфейс низкого уровня, так и интерфейс высокого уровня для вызова R из Java. Существует плагин для Eclipse, который помогает настроить окружение R Java, доступный по адресу: http://www.studytrails.com/RJava-Eclipse-Plugin/.
Это, похоже, старый вопрос. Однако Rserve и rJava — это два хороших пакета для интеграции R с Java. На следующих блогах объясняется использование этих библиотек:
Для rJava: Интеграция R с Java с помощью rJava
Для Rserve: Интеграция R с Java с помощью Rserve
Надеюсь, это поможет.
Это старый вопрос, но для тех, кто все еще заинтересован: я написал статью в блоге, в которой представлен подробный пример использования JRI/rJava (основанного на JNI моста) для решения подобной задачи (инструкция ориентирована на разработку в среде Linux). В статье также есть сравнение альтернативных подходов к выполнению математических операций с помощью вызовов к R и аналогичным фреймворкам.
Ссылка: http://buildlackey.com/integrating-r-and-java-with-jrirjava-a-jni-based-bridge/
Renjin — это альтернатива, которая позволяет не только интегрировать многие пакеты R, но и обеспечивает простое взаимодействие между Java и R с помощью объектов. Вы можете узнать больше о Renjin по следующей ссылке: http://www.renjin.org/.
Как сопоставить любой символ на нескольких строках в регулярном выражении?
Что значит 'synchronized'?
Почему нет ConcurrentHashSet, если есть ConcurrentHashMap?
Как объявить массив в одну строку?
Какие проблемы следует учитывать при переопределении equals и hashCode в Java?