R與Java的結合

如果有人需要用java寫出一個可以應用R的介面

我在這裡先提供如何用java成功的call R,其中有很多眉眉角角,而R的文件也不是很清楚,這是我的好朋友郭董幫我試出來的,放在這裡供鄉民參考參考

Step 1. 先把java的開發環境都設定好,先裝好JDK及IDE,例如Netbean,設好環境變數等

Step 2.請先到rjava的網站下載 3個最重要的jar檔案http://www.rforge.net/JRI/files/,請記得3個.jar的檔都要下載回來放在同一個資料夾

Step 3. 接下來的步驟非常重要,如果你尿急的話請先去上完廁所再回來,因為這個設定關係到是否可以在java裡直接下r的指令,並產生出結果,首先,請到控制台\所有控制台項目\系統\進階系統設定\進階\環境變數,我們要加入 2個路徑,第一個是r.dll的路徑,這是你安裝好R之後一定會有的,就在你的R目錄下面(大部份的人是C:\Program Files\R\R-2.15.1\bin\i386 or x64)請把這一條加入環境變數裡,如下圖(請注意,你的路徑有可能不一樣,端看你的R安裝在那裡)


然後再把.jar存放的路徑加進去環境變數裡,請記得前後一定要用;分隔(請注意,你的路徑有可能不一樣,端看你將.jar放在哪裡)


Step 4. 打開Java IDE測試一下,如果跑出 15,那就代表你可以成功的在java裡call R了

import org.rosuda.JRI.Rengine;

public class RJava
{
    public static void main (String[] args)
    {
        // 宣告一個Rengine
        Rengine re=new Rengine (new String [] {"--vanilla"}, false, null);
        if (!re.waitForR())
        {
            System.out.println ("Cannot load R");
            return;
        }
       
        // 計算3*5並印出結果
        System.out.println (re.eval ("x<-3*5").asDouble ());
       
        // 結束
        re.end();
    }
   
}
PS. 在寫這一篇的過程中,發現還有一個善心人士開發了另外一個可以在java裡call R的package叫做Rcaller,讓我試試看之後再分享給各位鄉親

留言

這個網誌中的熱門文章

R中Try and Catch的寫法

如何將DSM(NAS)變成Mail Server

如何安裝.tgz的檔案至Ubuntu