gpt4 book ai didi

java - 如何使用 Process builder 从 java 运行 R 脚本

转载 作者:行者123 更新时间:2023-12-01 09:17:01 26 4
gpt4 key购买 nike

这应该很简单,但我不断收到错误。我有一个 Swing 应用程序。当用户按下按钮时,系统会提示他们选择要打开的 R 文件。 Rscript 路径存储在用户首选项中。然后 Processbuilder 应运行脚本:

Processbuilder的方法如下

 public static void open(File document) throws IOException, ScriptException {
Preferences userPrefs = Preferences.userNodeForPackage(TBB_SQLBuilder.class);
String pt=document.getAbsolutePath().toString().trim()
Process process = new ProcessBuilder(userPrefs.get("PathToR",null)+" '"+pt+"'").start();
}

但是它给了我错误:

java.io.IOException: Cannot run program "/Applications/RStudio.app '/Users/sebastianzeki/Myscript.R'": error=2, No such file or directory

当我将 R 路径(在 MacOSX ElCapitaine 上)更改为 /Library/Frameworks/R.framework/Versions/3.1/Resources/Rscript 时,我收到相同的错误

尝试运行 Runtime.getRuntime().exec(userPrefs.get("PathToR",null)); 也会给我一个错误,但这次是:

Cannot run program "/Applications/RStudio.app": error=13, Permission denied

但是当我使用 Rscript 时我没有得到这个RStudio 和 Rscript 的权限设置为每个人都可以读取和写入。

我想做的就是在 R 中运行我的脚本(这会输出我的应用程序获取的 csv)

我知道 Renjin(不支持 dplyr)JRI 和 rJava(路径等困惑的安装)和 RServe(只是不喜欢它),所以进程构建器将我的脚本作为外部脚本运行是对我来说最好的选择。

我做错了什么?

最佳答案

ProcessBuilder 的构造函数接受的不是命令行,而是命令及其参数。因此,在这个例子中它应该被构造为

new ProcessBuilder(userPrefs.get("PathToR",null), pt);

此构建器将使用单个参数 pt 运行 R。请注意,即使 pt 包含空格,它也会被解释为单个参数。

关于java - 如何使用 Process builder 从 java 运行 R 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40474047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com