Я попытался вызвать R Rserve с помощью Java-кода. Я хотел использовать REXPGenericVector для хранения и передать массив R:Как добавить двойные элементы в 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);
Однако сообщение об ошибке появляется в 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» не работает (как и ожидалось с «Двойным»). Возможно, вам стоит попробовать еще один «REXP»? –