2013-07-31 120 views
1

我试图通过Rserve使用Java代码来调用R。我想使用REXPGenericVector存储和传递数组为R:在c.assign("x",v);如何将双元素添加到RList?

RList r = new RList(); 
r.add(new Double(1.0)); 
REXPGenericVector v = new REXPGenericVector(r); 

// make a new local connection on default port (6311) 
RConnection c = new RConnection(); 
// assign data to variable x 
c.assign("x",v); 

System.out.println("Printing out v:"+v); 

然而,错误消息显示出来:

java.lang.ClassCastException: java.lang.Double cannot be cast to org.rosuda.REngine.REXP 
at org.rosuda.REngine.RList.at(RList.java:103) 
at org.rosuda.REngine.Rserve.protocol.REXPFactory.getBinaryLength(REXPFactory.java:489) 
at org.rosuda.REngine.Rserve.RConnection.assign(RConnection.java:272) 
at com.xypress.Test.main(Test.java:29) 

如何添加双或绳或其它类型的数据到RList?

在此先感谢。

+0

我对'rserve'没有经验,但基于文档,它看起来像你正在做的一切正确。要么我错过了一些东西,或者有更多的问题比发布的代码...再次,我不熟悉这个库,但我能想到的唯一的事情是,无论出于何种原因,'REXPGenericVector'不工作(正如预期的那样使用“Double”)。也许你应该尝试另一种'REXP'? –

回答