2011-09-17 61 views
49

我有一個Java應用程序需要執行偏最小二乘迴歸。看起來沒有PLSR的Java實現。 Weka在某些時候可能有類似的東西,但它不再在API中。另一方面,我發現了一個很好的R實現,它有額外的好處。它被我想複製的結果的人使用,這意味着由於PLSR實施方式的差異,事情出錯的可能性會降低。Java-R集成?

問題是:是否有一個足夠好的(並且使用簡單)包使Java能夠調用R,將某些參數傳遞給函數並讀回結果?我的另一種選擇是讓Java在進程中產生R,然後監視它。數據將被讀取並寫入磁盤。你會推薦哪兩種?我錯過了顯而易見的第三種選擇嗎?

+0

這裏是不夠的教程好,R&Java的集成。 http://codophile.com/2015/04/15/how-to-integrate-r-with-java-using-rjava/ –

回答

47

我已經成功地使用在過去的兩個備選方案。

JRI

  • 優點:可能是更好的性能。
  • 缺點:你必須配置一些環境變量和庫,在Win/UNIX中不同。

RServe

  • 優點:易於安裝,不需要初始化R或鏈接對 任何[R庫,可以在不同的機器上運行。
  • 缺點:基於TCP/IP(服務器正在運行),無論從R.回調

其他替代我從來沒有使用:RCaller

+0

的開發者從Java調用R的方法看看這個:https://github.com/subes/invesdwin-context-r 它提供了一個簡單的Java API可以從中選擇多個運行時實現。因此,您只需編寫一次,然後在運行時選擇要使用的集成。正如Guido所說,每個人都有自己的利益/缺點。 – subes

1

我有類似的需求,並測試了一些與R的接口。我發現最適合我的需求(windows,c#)是Rserve,我相信它是用Java編寫的。我唯一的抱怨就是它不是64位的。我用一個用C#編寫的簡單客戶端,它工作得很好。我相信Java客戶端會好很多。

10

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

我對最穩健的解決方案的猜測是JGR。 JGR的開發商有一個郵件列表,Stats-Rosudamailing list Archive表示列表保持活躍的2013年

There is also code that has been put up at Googlecode,這裏有一個例子: http://stdioe.blogspot.com/2011/07/rcaller-20-calling-r-from-java.html

+1

JGR是一個圖形用戶界面,如果我沒有錯的話,可以使用JRI。 –

+0

我已經看到它被描述爲JGR –

3

JRI同時具有較低的水平,從Java調用R的高級接口。有一個eclipse插件可以幫助設置R Java環境http://www.studytrails.com/RJava-Eclipse-Plugin/

+0

我遵循了所有步驟,但無法完成最後一步:添加JRI_DIR。根據一個推薦,「你實際上不需要看JRI_DIR,你只需從[rjava]/jri /中添加* .jar -s並且它可以工作',但我無法做到。這是什麼意思? –

8

這是一個老問題..但是對於瀏覽這裏仍然感興趣的任何人來說:我寫了一篇博客文章,提供瞭如何使用JRI/rjava(基於JNI的網橋)來完成這種類型的事情的詳細示例(該操作方法專注於Linux dev環境)。我還通過調用R和類似的框架來比較和比較用於做'骯髒'的東西的替代方法。

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