Java-R整合?

我有一个Java应用程序需要执行偏最小二乘回归。 看来在那里没有PLSR的Java实现。 Weka在某个时候可能有类似的东西,但是它不再在API中。 另一方面,我发现了一个很好的R实现,这有一个额外的好处。 它被我想要复制的人使用,这意味着由于PLSR的实施方式的差异,事情出错的可能性会降低。

问题是:是否有一个足够好的(并且简单易用的)包,使Java可以调用R,将某些parameter passing给函数并读回结果? 我的另一个select是让Java在一个进程中产生R,然后监视它。 数据将被读取和写入磁盘。 你会推荐哪两个? 我错过了明显的第三个选项?

过去我已经成功地使用了两种select。

JRI

  • 优点 :可能更好的性能。
  • 缺点 :你必须configuration一些在Win / UNIX中不同的环境variables和库。

RServe

  • 优点 :易于设置,你不需要初始化R或链接任何R库,可以在不同的机器上运行。
  • 缺点 :基于TCP / IP(一个服务器正在运行),没有从R的callback

其他替代品,我从来没有用过: RCaller

Duncan Temple Lang已经开展了一些工作: http : //rss.acs.unt.edu/Rdoc/library/SJava/Docs/RFromJava.pdf 。

我认为最强大的解决scheme是JGR 。 JGR的开发者有一个邮件列表, Stats-Rosuda和邮件列表Archive表示该列表在2013年保持活跃。

在Googlecode中也有代码,这里有一个例子: http : //stdioe.blogspot.com/2011/07/rcaller-20-calling-r-from-java.html

这是一个古老的问题..但是对于浏览这里仍然感兴趣的任何人:我写了一篇博客文章,提供了一个如何使用JRI / rjava(一个基于JNI的网桥)来做这种事情的详细例子 – 专注于Linux开发环境)。 我也比较和对比了通过调用R和类似框架来做“mathy”东西的替代方法。

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

Renjin是一种替代scheme,它不仅允许R的许多包的集成,还可以通过对象在Java和R之间轻松地进行通信:

http://www.renjin.org/

JRI具有从Java调用R的低级和高级接口。 有一个eclipse插件可以在http://www.studytrails.com/RJava-Eclipse-Plugin/上设置R Java环境。

这似乎是一个老问题。 不过RserverJava是将R与Java集成在一起的两个很好的包。 以下博客解释这些库的用法。

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

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

我希望这将有所帮助。

我有类似的需要一段时间,并testing了一些R的接口。我发现最适合我的需求(Windows,C#)是Rserve ,我相信是用Java编写的。 我唯一的抱怨就是它不是64位的。 我用一个用C#编写的简单的客户端,它工作得很好。 我相信Java客户端会好很多。