将文件从R传递到Java
我正在通过Java将多个tab-delim文件传递到R。R程序将这些tab-delim文件合并为单个文件并发送回Java,它被捕获在变量名中。现在我想使用windows中的“保存”对话框将存储在名称中的该文件重命名并保存为tab-delim。非常感谢您的帮助。以下是Java代码:将文件从R传递到Java,java,jsp,r,Java,Jsp,R,我正在通过Java将多个tab-delim文件传递到R。R程序将这些tab-delim文件合并为单个文件并发送回Java,它被捕获在变量名中。现在我想使用windows中的“保存”对话框将存储在名称中的该文件重命名并保存为tab-delim。非常感谢您的帮助。以下是Java代码: import org.rosuda.REngine.*; public class rjava { // Before this run Rserve() command in R public
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;
}
}
是否可以修改R程序,使其以给定文件名在同一路径中输出文件,例如[path]/filename.out 否则,您可以修改execte字符串,以便R程序在给定位置输出。 看 在UNIX或Windows上使用命令行时,命令“R”可用于以R[options][outfile]的形式启动主R程序 -编辑 我刚才看到你正在使用RConnection。根据R文档,您可以定义在何处传输标准输出 函数sinkrecord.lis将把所有后续输出从控制台转移到外部文件record.lis
我发现在R和Java之间传递复杂对象是件很麻烦的事。我不会传递完整的数据,而是只将文件名作为字符串传递。要么让Java告诉R写出新文件my pref,要么让Java读入该文件,然后用新名称写出 目前,我的程序可以从文件夹中选择文本文件,这部分使用java、JSP和Servlets,并将选择的文件发送到R,然后R执行R的计算,并使用我在write.table函数中指定的名称写入文件夹。但我希望文件名应由用户编写,而不是默认名称。我只是熟悉R的命令行调用。你在使用其他东西吗?实际上,我的程序将合并的文件返回到java中。在java代码中,我需要使用Windows上的标准保存对话框以我自己的名字保存它。你到底是如何从java调用R的?我使用rosuda REngine调用R。这里不清楚要问什么。有一件事你不知道是什么?你是怎么解决这件事的?你能分享示例代码吗?@JD Long我已经尽可能精确地编辑了我的问题,并给了你代码。你的问题更清楚了!编辑得好。