在我工作的計算機上(運行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