[英]Call R from java - different R version
在我工作的计算机(运行fedora)上,默认安装R-2.15。 我下载了R-3.0.2,因为我需要几个仅适用于R 3的软件包。
当我尝试使用Runtime.getRuntime().exec(command);
从Java调用Rscript时Runtime.getRuntime().exec(command);
命令为字符串数组{"/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();
列出所有环境变量时System.getenv();
方法没有显示任何与R
相关的信息,与在终端中使用printenv
列出环境变量时的情况相同。 但是,当我在R中调用Sys.getenv
时,将定义变量R_HOME,R_LIBS,...。 这些是如何定义的?
您可以选择加载程序包时要查找的库。 例如,通过Rscript调用脚本时,可以使用
library(rJava, lib.loc = .libPaths()[4])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.