Как rcaller получить результаты с помощью runAndReturnResult
Как использовать Rcaller, чтобы получить более одного результата за один раз? Например, я использую
code.addRCode("data<-read.table(\""+ "/home/yo/Documents/Book1.csv"+ "\", header=TRUE,sep=\"\t\")");
caller.setRCode(code);
caller.runAndReturnResult("data");
Тогда я могу использовать caller.getParser().getNames().size()
...egfunction
Но если я хочу бежать summary(data$pH)
Как я должен делать? Добавить в код раньше? Если что "вызывающий" принадлежит к какому? Спасибо всем, кто мне поможет!
2 ответа
Используйте списки результатов в R. Например, у вас есть список
result <- list(a=c(1,2,3), b=3.6, c=5)
после вызова rcaller.runAndReturnResult(result) переменные a, b и c доступны через
double[] a = rcaller.getParser().getAsDoubleArray("a");
или же
int c = rcaller.getParser().getAsIntegerArray("c")[0];
С помощью метода getNames() вы также можете получить имена, содержащиеся в списке "result".
Когда вы используете summary(), ничего не меняется. Предположим, вы делаете вызов lm() в R как
ols <- lm (y ~ x + z, data=mydata)
а потом
detailed <- summary(ols)
и это также список, как возвращаемое значение lm(). Вы можете получить доступ к элементам этого списка, используя
double[] residuals = rcaller.getParser().getAsDoubleArray("residuals");
а также
double rsquared = rcaller.getParser().getAsDoubleArray("r.squared")[0];
Ничего не меняется после резюме (). Вернуться к вашему коду
code.addRCode("data<-read.table(\""+ "/home/yo/Documents/Book1.csv"+ "\", header=TRUE,sep=\"\t\")");
caller.setRCode(code);
caller.runAndReturnResult("data");
не возвращает список, вы можете набрать скорее
RCode code = new RCode();
code.addRCode("myresult <- list(res1=data$pH, res2=data$anotherVector)");
rcaller.setRCode(code);
caller.runAndReturnResult("myresult");
В конце концов,
double[] pH = caller.getParser().getAsDoubleArray(pH);
возвращает вашу переменную pH.
Для получения дополнительной информации посетите официальный блог здесь
Вы можете найти это здесь. это демонстрирует, как мы можем получить результат от RCaller, используя метод runAndReturnValue