簡體   English   中英

從Java調用R-不同的R版本

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM