¿Integración Java-R?


Tengo una aplicación Java que necesita realizar regresión de mínimos cuadrados parciales. Parece que no hay implementaciones Java de PLSR por ahí. Weka podría haber tenido algo parecido en algún momento, pero ya no está en la API. Por otro lado, he encontrado una buena implementación de R, que tiene una ventaja adicional. Fue utilizado por las personas cuyo resultado quiero replicar, lo que significa que hay menos posibilidades de que las cosas salgan mal debido a las diferencias en la forma en que PLSR es aplicado.

La pregunta es: ¿hay un paquete suficientemente bueno (y fácil de usar) que permita a Java llamar a R, pasar algunos parámetros a una función y leer los resultados? Mi otra opción es tener Java spawn R en un Proceso y luego monitorearlo. Los datos serían leídos y escritos en el disco. ¿Cuál de los dos recomendaría? Me estoy perdiendo la obvia tercera opción?

Author: mbatchkarov, 2011-09-17

7 answers

He utilizado con éxito dos alternativas en el pasado.

JRI

  • Pros : probablemente mejor rendimiento.
  • Cons: debe configurar algunas variables de entorno y bibliotecas, diferentes en Win/UNIX.

RServe

  • Pros : fácil de configurar, no es necesario inicializar R o enlazar contra cualquier biblioteca R, puede ejecutarse en una máquina diferente.
  • Cons : basado en TCP / IP (se está ejecutando un servidor), no hay devoluciones de llamada de R.

Otras alternativas Nunca he utilizado: RCaller

 47
Author: Guido,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-13 14:59:03

Ha habido trabajo de Duncan Temple Lang: http://rss.acs.unt.edu/Rdoc/library/SJava/Docs/RFromJava.pdf .

Mi conjetura en cuanto a la solución más robusta sería JGR. Los desarrolladores de JGR tienen una lista de correo, Stats-Rosuda y el Archivo de la lista de correo indica que la lista permanece activa a partir de 2013.

También hay código que se ha puesto en Googlecode , con un ejemplo aqui: http://stdioe.blogspot.com/2011/07/rcaller-20-calling-r-from-java.html

 10
Author: 42-,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-10 18:08:50

Esta es una vieja pregunta.. pero para cualquiera que navegue por aquí que todavía esté interesado: escribí un artículo de blog que proporciona un ejemplo detallado de cómo usar JRI/rjava (un puente basado en JNI) para hacer este tipo de cosas (el cómo se centra en entornos de desarrollo de Linux). También comparo y contraste enfoques alternativos para hacer cosas 'matemáticas' llamando a R y marcos similares.

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

 8
Author: Chris Bedford,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-21 23:48:56

Renjin es una alternativa que permite no solo la integración de muchos paquetes de R también una comunicación fácil entre Java y R a través de objetos:

Http://www.renjin.org/

 6
Author: juanmajmjr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-25 14:10:49

JRI tiene interfaz de nivel bajo y Alto para llamar a R desde Java. Hay un complemento de eclipse que ayuda a configurar el entorno Java R en http://www.studytrails.com/RJava-Eclipse-Plugin/.

 3
Author: user1569047,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-05 11:47:43

Esta parece ser una vieja pregunta. Sin embargo Rserve y rJava son dos buenos paquetes para integrar R con Java. Los siguientes blogs explican el uso de ambas bibliotecas.

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

Para Rserve: http://www.codophile.com/how-to-integrate-r-with-java-using-rserve /

Espero que esto ayude.

 3
Author: Rajeev Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-13 09:16:23

Tuve una necesidad similar hace un tiempo y probé algunas de las interfaces de R. La que encontré que era la mejor para mis necesidades (windows, c#) fue Rserve que creo que está escrito en Java. Mi única queja es que no era de 64 bits. Usé un simple cliente escrito en c# y funcionó muy bien. Estoy seguro de que el cliente Java es mucho mejor.

 1
Author: darckeen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-18 16:17:34