r语言 - 无法使用 Rserve 将数据写入 csv



我能够通过 Java 应用程序中的 Rserve 在 R 脚本中执行远程命令执行和函数调用。但是当我的函数尝试将数据帧保存在 csv 文件中时,使用

write.csv(MyData, file = "MyData.csv")

它们 MyData.csv 文件未生成,并且未显示任何错误。 当我在 R 控制台中执行相同的步骤时,它工作正常。

Rserve在我的本地机器本身中运行,我正在使用以下内容进行连接和执行:

RConnection connection = new RConnection();
connection.eval("makecsv()")

附言我省略了上面的"源 R 脚本"步骤

仅供参考,这是我尝试运行的虚拟 R 脚本:

makecsv <- function(){
        x<-rnorm(10)
        y<-rnorm(10)
        df1<-data.frame(x,y)
        write.csv(df1, file = "MyData.csv")
        return(df1)
}

可能你必须使用绝对路径,如下所示:

write.csv(MyData, file = "/var/MyData.csv")

如果您的Rserve已死,则可能会发生这种情况。使用适当的错误处理包装 try-catch 有助于调试。

这个版本对我有用:

import org.rosuda.REngine.*;
import org.rosuda.REngine.Rserve.*;
public class Main {
    public static void main(String[] args) {
        try {
            RConnection c = new RConnection();
            org.rosuda.REngine.REXP getwd = c.eval("getwd()");
            System.out.println(getwd.asString());
            c.eval("source("main.R")");
            c.eval("makecsv()");
            c.close();
        } catch (REngineException | REXPMismatchException e) {
            e.printStackTrace();
        }
    }
}

输出为:

C:/Users/moon/Documents
Process finished with exit code 0

Documents文件夹中,我有MyData.csv.

这里有 2 个建议:

  1. 尝试先将字符串解析为表达式,方法是connection.eval(parse("makecsv()"))
  2. 通过connection.eval("getwd()")检查工作目录

相关内容

  • 没有找到相关文章

最新更新