2016-11-12 56 views
1

在Rserve中有一個公式得到了這個問題。我嘗試了doubleint,但那也沒用。這是我從R回來的一段文字。描述CI。但結果似乎沒有回到Java應用程序。我已經嘗試了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(),然後使用訪問器方法訪問向量中的每個項目。

相關問題