我正在从R脚本(使用Renjin库)中检索值,然后尝试在java中操作它们。 R脚本返回一个ListVector,如下所示:
c(1L, 2L, 3L, 4L, 5L...10 elements total)
c(0.70836348202446, 3.27419352963856, 4.08477502998281, 4.11959291310495, 4.64797692435211,... 10 elements total)
c(10.88276411602949, 11.01414766445697, 14.22416580313999, 14.40880862158516, 15.64782262321588,... 10 elements total)
我希望能够从每个Vector中获取特定元素,因此在第一个实验中,我希望能够遍历,以便打印出所有元素。
为此我正在做
ListVector exp = (ListVector) engine.eval(new java.io.FileReader("/Users/sebastianzeki/Desktop/script.R"));
java.util.Iterator<SEXP> itr = exp.iterator();
System.out.println("Iterating through Vector elements...");
while(itr.hasNext()){
java.util.Vector<SEXP> v=new Vector<SEXP>();
v.add(itr.next());
java.util.Iterator<SEXP> itr2 = v.iterator();
while(itr2.hasNext()){
System.out.println("My Elements"+itr2.next());
}
}
然而,这只是分别打印出每个向量,以便我最终得到
My Elementsc(1L, 2L, 3L, 4L, 5L...10 elements total)
My Elementsc(0.70836348202446, 3.27419352963856, 4.08477502998281, 4.11959291310495, 4.64797692435211,... 10 elements total)
My Elementsc(10.88276411602949, 11.01414766445697, 14.22416580313999, 14.40880862158516, 15.64782262321588,... 10 elements total)
答案 0 :(得分:0)
您正在调用“toString()”,它提供调试输出,但通常不会打印向量的全部内容。
您可以通过调用getElementAsObject(i)
或键入的访问者getElementAsDouble(i)
来访问向量的各个元素:
for(SEXP element in exp) {
Vector elementVector = (Vector)element; // if you're sure this will be a vector
for(int i=0;i<elementVector.length();++i) {
System.out.println("[" + i + "] = " + elementVector.getElementAsDouble(i));
}
}
您可以在docs.renjin.org
上找到有关此API的更多文档