2015-08-25 26 views
0

我正在嘗試在java代碼中集成R代碼。主要目標是能夠使用在R中創建的模型的預測。我能夠正確設置環境並使用基本的R命令工作正常。 問題:試圖將數據從java推送到R函數。使用jri將數據傳遞給java從rja

代碼片段:

REXP data=re.eval("newdata <- with(cbpp, expand.grid(period=unique(period), herd=unique(herd)))"); 
REXP fit=re.eval("predict(gm1,newdata,type=\"response\")"); //Want to pass data created in java as newdata 
System.out.println(fit.asDoubleArray().length); 
在上面的代碼中

的「newdata正在由R填充,用我想要的是能夠在Java中創建自己的數據,並通過在R. 預測功能注: 將R代碼我試圖執行是lme4包廣義線性混合的mmodel(GLMM)模型

回答

0

這是一個很長一段時間,因爲我用JRI但我認爲你可以使用assign()一個例子下面是一個簡單的。傳遞雙打數組的例子:

re.assign("newdata", new double[] {1.5, 2.5, 3.5}); 
+0

嗨MS,我曾嘗試傳遞雙數組作爲數據使用分配,但它不接受,作爲有效的數據。我在R中檢查了新數據的類類型由與double []不兼容的因素組成。我想知道Java中與「newdata」類類型兼容的數據類型。 非常感謝你的回覆:) –

+0

我沒有在我的電腦上設置JRI,但我認爲你應該能夠使用're.assign()'將字符串數組傳遞給R,然後將其轉換爲使用're.eval()'的R中的因子。 – MadScone

+0

謝謝MS,今天我解決了這個問題。僅供將來使用: 解決方案:有一個更高級別的Rengine API,我用它來創建一個整數數組的數據框。然後,我將這個數據框傳遞給R,然後我將整數的datafram轉換爲因子的數據框,並且它工作正常。將嘗試尋找更優雅的解決方案並在此更新。 –