Как отобразить вывод на текстовое поле в Java Renjin?
Я новичок в java
а также renjin
, Мне нужно, чтобы мой результат показывался в моем jtextpane
Как я могу это сделать? Я очень устал. Если вы знаете, как это сделать, скажите, пожалуйста. Спасибо
RenjinScriptEngineFactory factory = new RenjinScriptEngineFactory();
// create a Renjin engine:
ScriptEngine engine = factory.getScriptEngine();
try {
//engine.eval("RealData <- read.csv('E:/R Project/Original Data Cleaning Data Historis.csv', header = TRUE)");
engine.eval("RealData <- read.csv('"+textPath.getText().replace('\\','/')+"', header = TRUE)");
//engine.eval("print(RealData)");
engine.eval("library(e1071)");
//engine.eval("tune.out <- tune(svm, hasil~., data=RealData, kernel=\"radial\",ranges = list(cost = c(1:10),gamma = c (1:4)))");
//engine.eval("summary(tune.out)");
engine.eval("svmfit <- svm(hasil~., data=RealData, kernel=\"radial\", cost=2, gamma=4)");
editorSvm.setText(engine.eval("print(svmfit)").toString());
} catch (ScriptException ex) {
Logger.getLogger(Klasifikasi.class.getName()).log(Level.SEVERE, null, ex);
}`
1 ответ
Функция print.svm всегда возвращает NULL, поэтому вы не сможете получить желаемое, посмотрев на возвращаемое значение print()
,
Вместо этого print()
Функция запишет текст в стандартный поток вывода ScriptEngine, который по умолчанию отправляется в стандартный поток вывода процесса.
Как теперь описано в [документации][2], вы можете перенаправить вывод из R в StringWriter следующим образом:
StringWriter outputWriter = new StringWriter();
engine.getContext().setWriter(outputWriter);
engine.eval("print(svmfit)");
String output = outputWriter.toString();
// Reset output to console
engine.getContext().setWriter(new PrintWriter(System.out));
Выходные данные функции print.svm теперь будут храниться в Java output
переменная.