rJava: 调用 Java 函数来检索对象列表
rJava: calling a Java function to retrieve a list of objects
我需要在 R 中获取 Java 中的对象列表。在下面的代码中,我成功地获得了 R 中的列表(列表的长度是正确的)但是我看不到对象的内容。
这个class代表对象:
package mypackage;
public class ValueObject
public String s;
public int i;
}
此classreturns对象列表:
package mypackage;
public class MyClass {
public ValueObject [] test(){
ValueObject [] array = new ValueObject [3];
ValueObject a = new ValueObject();
a.i = 1;
a.s = "A";
array[0] = a;
ValueObject b = new ValueObject();
b.i = 2;
b.s = "B";
array[1] = b;
ValueObject c = new ValueObject();
c.i = 3;
c.s = "C";
array[2] = c;
return array;
}
}
而我 运行 它在 R 中,像这样:
obj = .jnew("mypackage/MyClass")
x = .jcall(obj,"[Lmypackage/ValueObject;","test")
print(length(x))
显示3,表示对象在那里。但我不知道如何访问对象中的数据。我试过了:
x[1]$s
x[1]["s"]
x[1]@s
并且总是得到 NULL。这段代码有什么问题?
这样就可以了:
print(x[[1]]$s)
我需要在 R 中获取 Java 中的对象列表。在下面的代码中,我成功地获得了 R 中的列表(列表的长度是正确的)但是我看不到对象的内容。
这个class代表对象:
package mypackage;
public class ValueObject
public String s;
public int i;
}
此classreturns对象列表:
package mypackage;
public class MyClass {
public ValueObject [] test(){
ValueObject [] array = new ValueObject [3];
ValueObject a = new ValueObject();
a.i = 1;
a.s = "A";
array[0] = a;
ValueObject b = new ValueObject();
b.i = 2;
b.s = "B";
array[1] = b;
ValueObject c = new ValueObject();
c.i = 3;
c.s = "C";
array[2] = c;
return array;
}
}
而我 运行 它在 R 中,像这样:
obj = .jnew("mypackage/MyClass")
x = .jcall(obj,"[Lmypackage/ValueObject;","test")
print(length(x))
显示3,表示对象在那里。但我不知道如何访问对象中的数据。我试过了:
x[1]$s
x[1]["s"]
x[1]@s
并且总是得到 NULL。这段代码有什么问题?
这样就可以了:
print(x[[1]]$s)