在我工作的计算机上(运行fedora)R-2.15默认安装。我下载了R-3.0.2,因为我需要几个包,其仅可对R 3从Java调用R - 不同的R版本
当我尝试使用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(什么'版本'返回)? –
我添加了有关libPath的信息。你是对的,这似乎是问题....但我该如何解决它? – Jonas