2014-03-24 93 views
1

我在Java中使用RCaller以執行外部R程序。RCaller獲取未知大小的矩陣

問題是,我不知道矩陣的確切大小,但.getAsDoubleMatrix()方法想要的大小。

double[][] matrix = caller.getParser().getAsDoubleMatrix("result", DONT_KNOW, DONT_KNOW); 

有沒有辦法保持大小動態?

回答

0

通過revision e263b5393d43,RoutputParser類現在有getDimensions()方法來獲取矩陣的未知維。這裏是通過測試的文件:

int n = 21; 
int m = 23; 
double[][] data = new double[n][m]; 
for (int i=0;i<data.lengthi++){  
    for (int j=0;j<data[0].length;j++){ 
     data[i][j] = Math.random(); 
    } 
} 
RCaller caller = new RCaller(); 
Globals.detect_current_rscript(); 
caller.setRscriptExecutable(Globals.Rscript_current); 

RCode code = new RCode(); 
code.addDoubleMatrix("x", data); 
caller.setRCode(code); 

caller.runAndReturnResult("x"); 

int[] mydim = caller.getParser().getDimensions("x"); 

Assert.assertEquals(n, mydim[0]); 
Assert.assertEquals(m, mydim[1]); 

最新編譯的Jar不包括此更新,但是,我打算一個2.3版下週準備,或者你可以下載源,並立即編譯自己。

訪問RCaller的官方博客頁面的最新版本here

+0

好,謝謝,這樣的解決方案是,有沒有辦法解決。 : -/ – Chris

+1

放鬆!獲取版本2.3.0,其中包含使用鏈接https://drive.google.com/folderview?id=0B-sn_YiTiFLGZUt6d3gteVdjTGM&usp=drive_web – jbytecode

+0

請求的功能。這是新版本的博客條目:http:/ /stdioe.blogspot.com.tr/2014/05/new-release-rcaller-230_15.html – jbytecode