J'ai une application Java qui doit effectuer une régression partielle des moindres carrés. Il semblerait qu'il n'y ait pas d'implémentations Java de PLSR). Weka pourrait avoir eu quelque chose comme à un moment donné, mais ce n'est plus dans l'API. D'un autre côté, j'ai trouvé une bonne implémentation R, qui a un bonus supplémentaire. Elle a été utilisée par les personnes dont je veux reproduire le résultat, ce qui signifie qu'il y a moins de chances que les choses tournent mal en raison des différences dans la façon dont le PLSR est mis en œuvre.
La question est: existe-t-il un package suffisamment bon (et simple à utiliser) qui permet à Java d'appeler R, de passer certains paramètres à une fonction et de relire les résultats? Mon autre option est de avoir Java spawn R dans un processus, puis le surveiller. Les données seraient lues et écrites sur le disque. Lequel des deux recommanderiez-vous? La troisième option évidente me manque-t-elle?
J'ai utilisé avec succès deux alternatives dans le passé.
Autres alternatives Je n'ai jamais utilisé: RCaller
Il y a eu des travaux par Duncan Temple Lang: http://rss.acs.unt.edu/Rdoc/library/SJava/Docs/RFromJava.pdf .
Ma conjecture quant à la solution la plus robuste serait JGR . Les développeurs de JGR ont une liste de diffusion, Stats-Rosuda et Archive de la liste de diffusion indique que la liste reste active à partir de 2013.
Il y a aussi du code qui a été mis en place sur Googlecode , avec un exemple ici: http://stdioe.blogspot.com/2011/07/rcaller-20-calling-r- from-Java.html
Ceci est une vieille question .. mais pour tous ceux qui naviguent ici qui sont toujours intéressés: j'ai écrit un article de blog qui fournit un exemple détaillé de la façon d'utiliser JRI/rjava (un pont basé sur JNI) pour faire ce type de chose (le comment -to se concentre sur les environnements de développement Linux). Je compare et contraste également des approches alternatives pour faire des trucs "mathématiques" en appelant à R et à des cadres similaires.
URL> http://buildlackey.com/integrating-r-and-Java-with-jrirjava-a-jni-based-bridge/
Renjin est une alternative qui permet non seulement l'intégration de nombreux packages de R, mais aussi une communication facile entre Java et R via des objets:
JRI a une interface de bas niveau et de haut niveau pour appeler R à partir de Java. Il existe un plugin Eclipse qui aide à configurer l'environnement R Java sur http://www.studytrails.com/RJava-Eclipse-Plugin/ .
Cela semble être une vieille question. Cependant Rserve et rJava sont deux bons packages pour intégrer R à Java. Les blogs suivants expliquent l'utilisation de ces deux bibliothèques.
Pour rJava: http://www.codophile.com/how-to-integrate-r-with-Java-using-rjava/
Pour Rserve: http://www.codophile.com/how-to-integrate-r-with-Java-using-rserve/
J'espère que cela vous aidera.
J'ai eu un besoin similaire il y a quelque temps et j'ai testé quelques-unes des interfaces de R. Celle que j'ai trouvée la meilleure pour mes besoins (windows, c #) était Rserve qui, je crois, est écrite en Java. Mon seul reproche, c'est que ce n'était pas du 64 bits. J'ai utilisé un simple client écrit en c # et cela a très bien fonctionné. Je suis sûr que le client Java est beaucoup mieux.
FastR est une implémentation basée sur GraalVM de R. L'incorporer dans une application JVM est aussi simple que:
Context ctx = Context.newBuilder("R").allowAllAccess(true).build();
ctx.eval("R", "sum").execute(new int[] {1,2,3});
Plus de détails dans cet article: https://medium.com/graalvm/faster-r-with-fastr-4b8db0e0dceb