2017-09-04 6 views
0

저는 초보자 인 javarenjin입니다. 출력 결과가 내 jtextpane에 필요합니다. 어떻게 할 수 있습니까? 너무 피곤해. 어떻게하는지 알고 있다면 알려주세요. 감사java renjin에서 텍스트 팬의 출력을 표시하는 방법은 무엇입니까?

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()의 반환 값을보고 당신이 원하는 것을 얻을 수 없습니다 있도록 print.svm 함수는 항상 NULL을 반환합니다.

대신 print() 함수는 텍스트를 ScriptEngine의 표준 출력 스트림에 씁니다.이 출력 스트림은 기본적으로 프로세스의 표준 출력 스트림으로 보내집니다. 마찬가지로 지금 [문서]에서 설명한

[2] 만약 StringWriter를이 방식으로 R의 출력을 리디렉션 할 다음 print.svm 함수의 출력이 현재 저장한다

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

을 Java output 변수입니다.