2017-09-04 24 views
0

我在javarenjin初学者。 我需要我的输出结果显示在我的jtextpane,我可怎么办呢?我好累。 如果你知道如何去做,请告诉我。 感谢如何在java renjin的textpane上显示输出?

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); 
    }` 

回答

0

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变量。