2011-08-24 26 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

相关问题