2016-11-12 1 views
1

Rserve의 수식에이 문제가 있습니다. 내가 doubleint으로 시도했지만 그 중 하나가 작동하지 않았다. 그것은 내가 R에서부터 원했던 텍스트 블록입니다. CI를 설명하십시오. 그러나 그 결과는 자바 애플리케이션으로 되돌아 오지 않는 것처럼 보인다. 나는 R에서 명령을 시도하고 거기에서 작동합니다. 왜 작동하지 않는지 전혀 모릅니다. 나는 오류 메시지를 검색 할 시도했지만 무슨 뜻인지 알 수 없었다Java에서 Rserve를 사용하고 t.test를 계산하려고합니다. 결과가 Java로 돌아갑니다

package rservedem; 

import java.io.FileInputStream; 
import java.io.FileNotFoundException; 


import java.util.Scanner; 
import org.rosuda.REngine.*; 
import org.rosuda.REngine.Rserve.*; 
/** 
* 
* @author Carl 
*/ 
public class RserveDem { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     RConnection connRserve; 

     Scanner inputStream = null; 
        try { 
         inputStream = new Scanner(new FileInputStream("C:/vikt-fore_data2Update.csv")); //läser in data från fil 


       } 
        catch (FileNotFoundException e) { 
         System.out.println("Filen hittades inte! Stänger av..."); 
         System.exit(0); 
        } 
    inputStream.useDelimiter(","); 


    int vikt; 

        double [] memberArray = new double[157]; 
        for (vikt = 0; vikt < memberArray.length; vikt++) { 



           memberArray [vikt] = Double.valueOf(inputStream.next()); 

        } 

     try { 


     connRserve = new RConnection(); 
     connRserve.assign("memberArr", memberArray); 
     String toRserveForProcessing = "t.test(memberArr);"; 


     System.out.println("Den skapade strängen som skickas till Rserve " + toRserveForProcessing); 

     String summan = connRserve.eval(toRserveForProcessing).asString(); 
     System.out.println ("Svaret från rserve " + summan); 

    } 
    catch(RserveException ex) 
    { 
     System.out.println(ex.getMessage()); 
    } 
    catch (REXPMismatchException ex) 
    { 
     System.out.println(ex.getMessage()); 
    } 
     catch (Exception e) 
{ 
    System.out.println("Seomthing went wrong, but it's not Rserve: " +e.getMessage()); 
    e.printStackTrace(); 
} 
    } 

} 

: 이 코드를 얻었다. 명령을 수행하는 방법에 대한 아이디어를 얻고 Java 응용 프로그램의 출력 창에서 결과를 얻는 것이 도움이 될 것입니다. 그리고이 오류가 발생합니다 :

attempt to access org.rosuda.REngine.REXPGenericVector as String 

도움 주셔서 감사합니다.

답변

0

connRserve.eval(toRserveForProcessing).asString();connRserve.eval(toRserveForProcessing).toDebugString(); 대신 시도하십시오.

벡터를 문자열로 사용하려는 예외 상태로 액세스해야하는 결과 식에 액세스하려면 적절하게 입력하십시오. 이 경우 asList()을 호출 한 다음 접근 자 메서드를 사용하여 벡터의 각 항목에 액세스 할 수 있어야합니다.

관련 문제