[英]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.