2011-08-24 79 views
0

我通過Java將多個製表符分隔文件傳遞到R中.R程序將這些製表符分隔文件合併爲單個文件並將其發送回java,並將其捕獲到變量「name」中。現在,我要使用保存在windows.Any幫助高度appreciated.Here對話框來重命名並保存存儲在「名稱」該文件作爲選項卡DELIM是java代碼:將文件從R傳遞到Java

import org.rosuda.REngine.*; 

public class rjava { 
    // Before this run Rserve() command in R 


    public String ana(String filenames) 
    { 
     String name = ""; 
      try{ 

       System.out.println("INFO: Trying to connect to R "); 
       RConnection c = new RConnection(); 
       System.out.println("INFO: Connected to R"); 
       System.out.println("INFO: The Server version is "+ c.getServerVersion()); 
      // c.voidEval("source('D:/combine/combining_files.r')"); 
       c.voidEval("source('D:/combine/merge.r')"); 
       c.assign("file",filenames); 
      // name = (c.eval("fn(file)").asString()); 
       name = (c.eval("combine (file)").asString()); 
       c.close(); 
       } 

    catch(Exception e) 
    { 
      System.out.println("ERROR: In Connection to R"); 
      System.out.println("The Exception is "+ e.getMessage()); 
      e.printStackTrace(); 
    } 

    return name; 
    } 
} 
+0

*你究竟是從Java調用R的? –

+0

我用rosuda REngine打電話R. – Dinesh

+0

目前還不清楚這裏要問什麼。什麼是你無法弄清楚的一件事?你是如何試圖解決這一件事的?你能分享示例代碼嗎? –

回答

2

我發現在R和Java之間傳遞複雜的對象是一個痛苦的屁股。我不會傳遞完整的數據,而只會傳遞文件名作爲字符串。要麼讓Java告訴R寫出新文件(我的pref)或讓Java讀取文件中的內容,然後用新名稱寫出來。

0

可以修改R程序,使之使用給定的文件名輸出相同路徑中的文件,如[path]/filename.out

否則,您可以修改執行字符串,以便R程序在給定位置輸出。 參見http://cran.r-project.org/doc/manuals/R-intro.html#Invoking-R-from-the-command-line

當在UNIX或Windows命令行工作時,命令「R」可以在形式R [options] [<infile] [>outfile]

起動主程序R均可使用 - 編輯 我只是看到你正在使用RConnection。根據R的文檔中,可以定義在哪裏管標準輸出

功能水槽,sink("record.lis")會轉移從控制檯所有後續輸出到外部文件,record.lis。

+0

當前我的程序可以從文件夾(這部分在java和JSP和Servlets中)選擇文本文件,並將選定的文件發送到R然後執行R的計算和寫入文件夾名稱是我在「write.table」函數中指定的。但我希望文件的名稱應該由用戶寫入,而不是默認名稱。 – Dinesh

+0

我剛熟悉R的命令行調用。你還在使用別的東西嗎? – yottamoto

+0

實際上我的程序將合併後的文件返回到java代碼中,我需要使用Windows上的標準保存對話框將其保存爲自己的名稱。 – Dinesh

相關問題