2013-03-02 46 views
117

我在Windows上運行R,而不是以管理員身份運行。當我安裝一個軟件包,下面的命令不起作用:在Rprofile.site中使用.libPaths更改R默認庫路徑無法工作

> install.packages("zoo") 
Installing package(s) into ‘C:/Program Files/R/R-2.15.2/library’ 
(as ‘lib’ is unspecified) 
Warning in install.packages : 
    'lib = "C:/Program Files/R/R-2.15.2/library"' is not writable 

要安裝包,我必須指定庫的位置:

install.packages("zoo", lib="C:/software/Rpackages") 

要裝入一個包,我也有指定庫的位置:

library("zoo", lib.loc="C:/software/Rpackages") 

所有這一切都OK,但我想看看我是否能添加C:/software/Rpackages到庫路徑不知何故,因此不必每次都輸入了。

正如我在網上搜索,我發現,這樣做的一個方法是編輯Rprofile.site文件,並添加行

.libPaths("C:/software/Rpackages") 

但是,這樣做,並開始RStudio後,這是輸出我得到

> .libPaths() 
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library" 

,我加入到Rprofile.site.libPaths命令似乎並沒有有任何影響!爲什麼會這樣?或者更重要的是,我該如何解決這個問題,以便我可以在不輸入庫位置的情況下安裝和加載包?

注:如果我開始RStudio的.libPaths()命令似乎它應該

.libPaths("C:/software/Rpackages") 
> .libPaths() 
[1] "C:/software/Rpackages"    "C:/Program Files/R/R-2.15.2/library" 

工作是不是很奇怪嗎?

+0

你能擴大究竟是如何'install.packages位( 「動物園」)'不工作?錯誤訊息等? – joran 2013-03-02 03:45:48

+1

@joran當我嘗試'install.packages(「zoo」)'---時,我添加了錯誤消息---但這不是我真正的問題,這是爲什麼'Rprofile.site'中的'.libPaths()'不會'工作。 – 2013-03-02 03:49:22

+1

如果您使用RGui而不是R Studio,是否也有同樣的問題? – Dason 2013-03-02 07:35:47

回答

106

我一般儘量保持我的所有包在一個庫,但如果你想添加一個圖書館爲什麼不新庫追加到現有的庫:

.libPaths(c(.libPaths(), "~/userLibrary")) 

然後我得到:

> .libPaths() 
[1] "/Library/Frameworks/R.framework/Versions/2.15/Resources/library" 
[2] "/Users/davidwinsemius/userLibrary" 

.libPaths函數與大多數其他非圖形函數有點不同。它通過副作用起作用。報告並更改R環境變量的功能Sys.getenvSys.setenv已拆分,但.libPaths可以報告或更改其目標。有關將R啓動過程中的信息可以在?Startup幫助頁面,閱讀和有RStudio材料在:https://support.rstudio.com/hc/en-us/articles/200549016-Customizing-RStudio

你的情況看來,RStudio不尊重Rprofile.site設置或者是通過讀取一個覆蓋它們。從RStudio的默認設置之一進行Rprofile設置。還應該提及的是,該操作的結果還會將調用的內容附加到.Library.Library.site,這也是爲什麼託管R的RStudio(或任何其他IDE或網絡安裝的)可能表現出不同行爲的另一個原因。

+6

我需要反轉'c()'向量以確保新庫轉到自定義文件夾 – geotheory 2015-02-10 14:31:09

+0

優秀點。事實上,'.libPaths'函數默認具有相同的效果。操作系統在處理尾部斜線方面也有所不同。 (在Windows上不行)。其他選項存在。請參閱'?.libPaths' – 2015-02-10 16:20:14

+2

新的路徑實際上已經存在於文件系統中,否則它將不會被添加到庫路徑 – jarandaf 2015-04-18 11:19:48

17

我設法解決了這個問題,將代碼放在.Rprofile文件中的默認工作目錄中。

首先,我找到了默認的工作目錄

> getwd() 
[1] "C:/Users/me/Documents" 

然後我用一個文本編輯器編寫一個簡單的.Rprofile文件,下面一行是

.libPaths("C:/software/Rpackages") 

最後,當的位置我開始R並運行.libPaths()我得到所需的輸出:

> .libPaths() 
[1] "C:/software/Rpackages"    "C:/Program Files/R/R-2.15.2/library" 
[3] "C:/Program Files/RStudio/R/library" 
+0

這對我不起作用(BondedDust的解決方案也不行)。我創建了一個txt文件並將其保存爲getwd()中的.Rprofile文件夾。 – John 2014-04-07 18:01:18

+2

@約翰我相信我們在說同樣的話。 – 2014-04-07 21:04:53

+2

R從您的** HOME **目錄讀取.Rprofile,而不是從您的** CURRENT **目錄讀取。 – Crt 2016-06-21 21:29:12

138

正確的解決方案是將環境變量R_LIBS_USER設置爲所需庫文件夾的文件路徑的值,而不是讓RStudio識別Rprofile.site文件。

要在Windows中設置環境變量R_LIBS_USER,請轉到控制面板(系統屬性 - >高級系統屬性 - >環境變量 - >用戶變量)爲所需的值(庫文件夾路徑)

Variable name: R_LIBS_USER 
Variable value: C:/software/Rpackages 

設置R_LIBS_USER將確保庫首先顯示了在.libPaths()無論直接或通過右鍵單擊一個文件,「打開方式」開始RStudio開始RStudio的。

如果始終通過單擊RStudio快捷方式啓動RStudio,則Rprofile解決方案可以工作。在這種情況下,setting the default working directory to the directory that houses your Rprofile就足夠了。單擊文件啓動RStudio時,Rprofile解決方案不起作用,因爲它會將工作目錄從默認工作目錄中移開。

+2

同意適當的解決方案! – felixmc 2014-06-26 11:01:33

+6

絕對是合適的解決方案。唯一的缺點是,如果你的用戶是不是管理員(可能是,如果你有這個問題,開始用的情況下),你必須通過控制面板 - >用戶Accounts->用戶Accounts->更改我的環境來改變你的環境變量變量。 – 2015-03-02 16:46:41

+0

你(碰巧)知道在Linux命令行中的等價物嗎? – Diego 2015-04-08 22:39:28

5

如果您沒有管理員權限,這也可以幫助打開Rprofile.site -file位於\ R-3.1.0 \等並添加:

.First <- function(){ 
    .libPaths("your path here") 
} 

此評估.libPath()命令直接啓動

4

我真的很難理解這一點。 gorkypl在上次重新安裝我的操作系統Rstudio時提供了正確的解決方案,但是這一次,設置我的環境變量沒有解決。

卸載R和Rstudio,創建目錄C:\ R和C:\ Rstudio,然後重新安裝兩者。

將R_LIBS_USER用戶變量定義到您的首選目錄(根據gorkypl的答案),並重新啓動您的機器以便加載用戶變量。打開Rstudio,錯誤應該消失。

您也可以使用Sys.setenv()將R_LIBS_USER修改爲您的替代庫的路徑,該路徑更簡單,無需重新啓動計算機。

要查看R_LIBS_USER設置爲: ?Sys.getenv()

閱讀help(Startup)是非常有用的。

0
getwd() 

[1]「C:/ Users/........../軟件/我的[R工作室」 #copy雙倒逗號上面的鏈接

.libPaths(new="C:/Users/............/software/My R studio") 
#your default path will change for installing pakages 
2

如果你的默認包庫已安裝R的新版本後,或通過任何其他方式被改變,可以追加兩個庫使用所有的軟件包與下面的命令的幫助 獲取現有的庫路徑:

.libPaths()

現在,將現有的和舊的路徑:

.libPaths(c(.libPaths(), "~/yourOldPath"))

希望它有幫助。

1

我閱讀了自述文件。在那裏他們提到在命令行中使用.libPaths()來檢查哪些路徑在那裏。我之前有2個庫路徑。當我在需要的地方使用命令.libpath(「C:/ Program Files/R/R-3.2.4revised/library」)時,它改變了庫路徑。當我再次在命令行鍵入.libPaths()時,它向我顯示了正確的路徑。希望這有助於

5

我發現我認爲是一個解決方案here(感謝您在SFU的Carl Schwarz)添加一個永久性的個人庫(您不必定義每個會話)可以識別使用R還是Rstudio ,Rstudio將它視爲我Mac機上的默認設置。我沒有看到它明確地闡述了這一點,所以我總結了他們提供的步驟,Windows和Mac。

對於Windows 7操作系統:

  1. ,你想擁有你的私人圖書館,如在驅動器上創建一個目錄C:\用戶\ Rlibs(或其他你有權限)

  2. 搜索/去「編輯環境變量爲您的帳戶」

  3. 單擊「新建...」中的中間「環境變量」窗口

  4. 在「新用戶變量」窗口中,鍵入R_LIBS作爲「變量名稱」以及您創建的個人庫目錄的路徑,例如C:\用戶\ Rlibs

  5. 點擊OK,你應該看到在用戶變量窗口中的變量/值對

  6. 再次單擊確定

現在,當你啓動R(或Rstudio)並鍵入命令.libPaths(),您應該看到您創建的個人圖書館以及R系統圖書館。

對於Mac:

  1. 在你的 「家」 或 「用戶名」 目錄下創建一個名爲Rlibs

  2. 啓動終端應用程序的文件夾

  3. 類型:echo "R_LIBS=~/Rlibs"> .Renvrion確保大小寫匹配。

  4. 類型ls -a看到目錄中的文件的完整列表,現在應該包括.Renvrion

  5. 驗證.Renviron文件已正確設置:more .Renviron

啓動R/Rstudio並鍵入.libPaths(),您應該會看到個人圖書館的新路徑。

-1

我正在研究這個,因爲R有問題安裝到默認位置,而是隻是將軟件包放入臨時文件夾。事實證明,這是Mcaffee Endpoint Security的最新更新,顯然與R存在問題。您可以在安裝軟件包時禁用威脅防護,並且它可以正常工作。