Rsession讓Java與R建立連接

接着上一篇文章《Rserve安裝、配置和遠程操控》,這篇文章主要是介紹如果使用Rsession來使Java與R建立連接,Rsession爲Rserve的進一步封裝,廢話不多說,開始介紹。

1. Rsession下載與配置

Rsession的使用需要Rserve的Jar來支撐,所以需要的Jar包有:REngine.jarRserveEngine.jarRsession.jar,前兩個Jar的下載配置方式(http://www.rforge.net/Rserve/files/ )已在上一篇文章中進行了說明。在這我們只介紹Rsession的下載方式,下載地址:http://download.csdn.net/detail/tb3039450/9621620https://github.com/yannrichet/rsession/blob/master/Rsession/dist/rsession.jar

如果你在項目中使用maven進行管理,那可以在pom.xml 中添加如下內容:

   <dependency>
       <groupId>com.github.yannrichet</groupId>
       <artifactId>Rsession</artifactId>
       <version>1.8.3</version>
   </dependency>

2. Rsession的使用

import org.math.R.RserverConf;
import org.math.R.Rsession;
import java.util.Properties;

public class RServeHelper {

    private static Rsession rsession=null;

    /**
     * 利用Rsession初始化RServe
     * @return
     * @throws IOException
     */
    public static Rsession initRserve() throws IOException {
        //從配置文件中讀取Rserve信息,IP.用戶名.密碼
        Properties prop = PropertieHelper.getPropInstance("ssh.properties");
        String hostname = prop.getProperty("host");
        String username = prop.getProperty("username");
        String password = prop.getProperty("password");
        RserverConf rconf=new RserverConf(host,6311,username,password,new Properties());
        rsession = Rsession.newInstanceTry(System.out, rconf);
        return rsession;
    }

    /**
     * 創建Rsession單例
     * @return
     * @throws IOException
     */
    private static Rsession getRsessionInstance() throws IOException {
        if(rsession==null){
            rsession=initRserve();
        }
        return rsession;
    }
}

具體Rsession的方法使用可以查看https://github.com/yannrichet/rsession

在這提醒大家幾點,也是我碰到的一些坑,希望能引起大家注意。

  • Rsession中的set("...",...)方法的第二個參數爲本地數據,一般爲現成的數據,只能是本地的數據,如果放入字符串,那麼該變量的值就爲該字符串。
  • 如果想要保存一個執行過程中產生的變量,可以使用eval()方法。例如eval("tmp <- head(test)")

Rsession使用起來還是相對便捷的,祝大家使用愉快。^_^

參考:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章