55 votes

Java-R de l'intégration?

J'ai une application Java qui doit effectuer la régression des moindres carrés partiels. Il semblerait qu'il n'y sont pas implémentations Java de PLSR là-bas. Weka peut avoir eu quelque chose comme ça à un certain point, mais il n'est plus dans l'API. D'autre part, j'ai trouvé un bon R mise en œuvre, qui est un bonus supplémentaire pour elle. Il était utilisé par les personnes dont le résultat que je veux reproduire, ce qui signifie qu'il ya moins de chance que les choses vont aller de mal en raison de différences dans la façon dont PLSR est mis en œuvre.

La question est: est-il assez bon (et simple à utiliser) package activer Java pour appeler R, passer des paramètres à une fonction et de lire les résultats? Mon autre option est d'avoir Java frayer R dans un Processus, puis de le surveiller. Les données sont lues et écrites sur le disque. Lequel des deux voulez-vous recommander? Suis-je manque évident de la troisième option?

51voto

Guido García Points 13252

J'ai utilisé avec succès deux alternatives dans le passé.

JRI

  • Pros: probablement de meilleures performances.
  • Inconvénients: vous devez configurer les variables d'environnement et les bibliothèques, les différents sous Win/UNIX.

RServe

  • Pros: facile à installer, vous n'avez pas besoin d'initialiser R ou un lien à l'encontre de toute R de la bibliothèque, peut fonctionner dans une machine différente.
  • Inconvénients: basé sur le protocole TCP/IP (serveur est en cours d'exécution), sans les rappels de R.

D'autres alternatives je n'ai jamais utilisé : RCaller

10voto

BondedDust Points 105234

Il y a eu des travaux par Duncan Temple Lang: http://rss.acs.unt.edu/Rdoc/library/SJava/Docs/RFromJava.pdf .

Je pense que le plus robuste solution serait JGR. Les développeurs de JGR avoir une liste de diffusion, Stats-Rosuda et les Archives de liste de diffusion indique la liste reste actif comme de 2013.

Il y a aussi le code qui a été mis en place à Googlecode, avec un exemple ici: http://stdioe.blogspot.com/2011/07/rcaller-20-calling-r-from-java.html

8voto

Chris Bedford Points 466

C'est une vieille question.. mais pour quelqu'un de navigation par ici que s'est toujours intéressée: j'ai écrit un article de blog qui fournit un exemple détaillé d'utilisation de JRI/rjava (un JNI basé pont) pour faire ce genre de chose (le savoir-faire est centré sur Linux environnements de dev). J'ai également comparer et de contraste et d'autres approches pour faire des 'mathy" trucs en appelant à la R et les cadres similaires.

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

3voto

user1569047 Points 21

JRI a à la fois de bas niveau et de Haut niveau de l'interface d'Appel R à partir de Java. Il y a un plugin eclipse qui aide dans la mise en place de la R de l'environnement Java à http://www.studytrails.com/RJava-Eclipse-Plugin/.

1voto

darckeen Points 416

J'ai eu le même besoin d'un certain temps et l'testé quelques-uns des interfaces à R. celui que j'ai trouvé pour être le meilleur pour mes besoins (windows, c#) a été Rserve qui, je crois, est écrit en Java. Mon seul reproche c'est qu'il n'était pas en 64 bits. J'ai utilisé un simple client écrit en c# et ça a très bien fonctionné. Je suis sûr que le client Java est beaucoup mieux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X