2012-11-30 23 views
6

下午好!是否可以爲R包設置默認位置,而不是給用戶一個選擇?

我是大學的系統管理員,我負責爲計算機實驗室設置圖像。 R是默認圖像的一部分,並且最長時間內,我們只有所有實驗室用戶都有一次登錄,因此我們可以設置默認目錄一次,然後將其映像到多個系統。這已經發生了變化,我們現在讓所有用戶都通過個性化登錄進行登錄。這給我帶來了一個與R有關的問題,以及我爲什麼轉向你。

您會發現,正如大多數人可能知道的那樣,當第一次運行R時,會打開一個對話框,提示是否保存軟件包等位置。點擊「確定」,這是用戶文件,但打其他任何東西,無論你放在哪裏。問題是,我們已經將系統鎖定得非常緊密,並且訪問比用戶個人目錄更多的東西並不是我們喜歡做的事情。

我的問題是這樣的 - 有沒有辦法強制R,通過免提腳本或只是一個設置的第一次運行,默認爲用戶的系統上的包目錄存儲?這將阻止我必須讓所有用戶都可以讀取和寫入R目錄,並且由於他們實際上沒有改變它的選擇,所以可能會更少。如果我必須繼續授予該文件夾的權限,我可以,但我寧願不。

謝謝!

+0

我建議閱讀'?Startup'和'.libPaths'以獲取可用選項的完整列表。 – hadley

回答

1

我現在不能測試這個,但我相信你可以在R etc目錄下的Rprofile.site文件中加入類似Sys.setenv(R_LIBS_USER=path.expand('~\R\library'))的東西。

+1

在Renvironmen.site中更容易將其設置爲'R_LIBS_USER = ....';你也可以做'R_LIBS_SITE',這可能是OP後面真正*的東西。 –

1

編輯您的.Renviron文件中設置默認路徑:

# .Renviron file 
R_LIBS = '~/.R/library' 
+1

問題是關於默認庫位置,而不是回購。 –

+0

@mplourde我的閱讀技巧在星期五有很多不足之處。 –

+0

+1 .Renviron。不知道有這樣的事情。 –

0

「......默認爲用戶的目錄系統上的包儲存......」

另一種方式,特別是如果你想不同設置的工作人員/學生將使用組策略來爲選定的機器/用戶登錄時設置一個環境變量。

例如相當於...

SETX "R_LIBS" "\\fileserver2/department_shared/public/r/packages" 

您可以輕鬆地檢查,如果這已經開始R和努力

Sys.getenv("R_LIBS") 

還努力,這個命令就可以告訴你的軟件包安裝了哪些:

rownames(installed.packages()) 
相關問題