2016-09-25 99 views
1

這是this question的一個有點泛化的版本。我該如何設置R_LIBS_SITE?在最新的R 3.3.1中,我無法在CentOS 7.2和openSUSE 42.1上獲得適當的值。如何設置R_LIBS_SITE或如何共享包站點?

在CentOS 7.2(Linux的x86_64的)與來自EPEL R I得到:

R version 3.3.1 (2016-06-21) -- "Bug in Your Hair" 
... 
Platform: x86_64-redhat-linux-gnu (64-bit) 
... 
> .libPaths() 
[1] "/usr/lib64/R/library" "/usr/share/R/library" 
> .Library 
[1] "/usr/lib64/R/library" 
> .Library.site 
[1] "/usr/lib64/R/library" "/usr/share/R/library" 
> R.home(component = "home") 
[1] "/usr/lib64/R" 

但是,各Renviron包括以下內容:

$ grep R_LIBS_SITE /usr/lib64/R/etc/Renviron 
R_LIBS_SITE=${R_LIBS_SITE-'/usr/local/lib/R/site-library:/usr/local/lib/R/library:/usr/lib64/R/library:/usr/share/R/library'} 

顯然,該設置不正確時施加我開始R.然而,例如在同一個文件中的R_LIBS_USER中的 變化被應用。此外,R_LIBS_SITE沒有完全被忽略,因爲它設置爲

R_LIBS_SITE='/usr/local/lib/R/site-library' 

產生

> .Library.site 
character(0) 

我看不出R_LIBS_SITE可以在其他地方覆蓋。我得到 中的R相同的行爲,當我與

R --no-environ --no-site-file --no-init-file 

啓動它我可以重現與openSUSE的一個類似的行爲。

或者還有另一種建議的方式來設置所有用戶共享的包站點?

回答

2

問題的一種可能的解釋是,某些目錄不存在。不存在的目錄將從列表中靜靜地移除。所以,如果你設置

R_LIBS_SITE='/usr/local/lib/R/site-library'

和目錄不存在,.Library.site將是一個空字符串(如在你的例子)。根據示例中的輸出結果,如果目錄/usr/local/lib/R/site-library/usr/local/lib/R/library不存在,它們將從Renviron文件的R_LIBS_SITE列表中以無提示的方式被刪除(同樣在輸出中)。