【发布时间】:2014-01-27 16:47:38
【问题描述】:
在我工作的计算机(运行 fedora)上,默认安装 R-2.15。我下载了 R-3.0.2,因为我需要几个仅适用于 R 3 的包。
当我尝试使用 Runtime.getRuntime().exec(command); 从 java 调用 Rscript,命令是字符串数组 {"/path/to/Rscript/3-0" "name/of/script" "...args..."} 我收到错误 WARNING: ignoring environment value of R_HOME 并说它无法加载所需的包。当我在终端中运行相同的命令时,它运行良好。
通过java调用和控制台调用有什么区别。我该如何解决?
编辑 1:
当我运行本地安装的 R-3 版本时,libPaths 返回
> .libPaths()
[1] "/home/<homedir>/.bin/R-3.0.2/library"
但是当我从 Java 调用 Rscript 时,libPaths 返回
[1] "/home/<homedir>/R/x86_64-redhat-linux-gnu-library/2.15"
[2] "/usr/lib64/R/library"
[3] "/usr/share/R/library"
[4] "/home/<homedir>/.bin/R-3.0.2/library"
问题似乎是 Java 添加了任何环境变量来告诉R 从 2.15 安装中加载包。我怎样才能防止这种情况发生?
编辑 2:
当我使用System.getenv(); 方法列出所有环境变量时,没有显示与R 相关的内容,当我在终端中使用printenv 列出环境变量时也是如此。但是当我在 R 中调用 Sys.getenv 时,定义了变量 R_HOME、R_LIBS、...。这些是如何定义的?
【问题讨论】:
-
如果您提供可重现的示例,这将更容易诊断。
R_HOME的值是多少?你的脚本包含什么?每种情况下的库在哪里(.libPaths()返回什么)?您确定在这两种情况下都使用相同版本的 R(version返回什么)? -
我添加了有关 libPaths 的信息。你是对的,这似乎是问题....但是我该如何解决呢?
标签: java r version environment-variables