Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文件从R传递到Java_Java_Jsp_R - Fatal编程技术网

将文件从R传递到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

我正在通过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 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我已经尽可能精确地编辑了我的问题,并给了你代码。你的问题更清楚了!编辑得好。