【发布时间】:2013-07-31 13:21:58
【问题描述】:
我尝试使用 Java 代码通过 Rserve 调用 R。我想使用 REXPGenericVector 来存储数组并将其传递给 R:
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);
但是,c.assign("x",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?
提前致谢。
【问题讨论】:
-
我没有使用
rserve的经验,但根据文档,看起来你做的一切都是正确的。要么我遗漏了一些东西,要么问题比发布的代码更多......再次,我不熟悉这个库,但我唯一能想到的是无论出于何种原因,REXPGenericVector不起作用(正如预期的那样,Double)。也许您应该尝试另一个REXP?