[英]How do I change the default library path for R packages
我試圖在我的工作計算機的本地驅動器上安裝 R 和 R studio,而不是組織網絡文件夾,因為通過網絡運行的任何東西都非常慢。 安裝時,目標路徑顯示它是我的本地 C: 驅動器。 但是,當我安裝新軟件包時,顯示的默認路徑是我的網絡驅動器,並且沒有更改選項:
.libPaths()
[1] "\\\\The library/path/I/don't/want"
[2] "C:/Program Files/R/R-3.2.1/library"
我正在運行 Windows 7 專業版。 如何刪除庫路徑 [1] 並使路徑 [2] 成為我安裝的所有基本軟件包和所有新軟件包的主要路徑?
請參閱help(Startup)
和help(.libPaths)
因為您有幾種可能已經設置的可能性。 其中有
R_LIBS_USER
.Rprofile
或Rprofile.site
分配.libPaths()
和更多。
在這種特殊情況下,無論\\\\\\\\The library/path/I/don't/want
在哪里設置,您都需要倒退並取消設置。
要以其他方式忽略它,您需要明確地覆蓋它,即通過
library("somePackage", lib.loc=.libPaths()[-1])
加載包時。
Windows 7/10:如果您的C:\\Program Files
(或安裝了 R 的任何地方)被阻止寫入,就像我的一樣,那么您將在編輯RProfile.site
(就像我一樣)時感到沮喪。 如上所述,我更新了R_LIBS_USER
並且它起作用了。 然而,即使在多次閱讀精美的手冊並進行廣泛搜索之后,我還是花了幾個小時才能做到這一點。 本着節省別人時間的精神......
假設您希望您的包位於C:\\R\\Library
:
C:\\R\\Library
Start
--> Control Panel
--> User Accounts
--> Change my environmental variables
Environmental Variables
窗口。 如果您看到R_LIBS_USER
,請突出顯示它並單擊Edit
。 否則單擊New
。 這兩個操作都會打開一個窗口,其中包含Variable
和Value
字段。R_LIBS_USER
已經存在,並且該值是我桌面的路徑。 我將我創建的文件夾添加到路徑中,如上所述,用分號分隔。 C:\\R\\Library;C:\\Users\\Eric.Krantz\\Desktop\\R stuff\\Packages
。 注意:我可以刪除桌面位置的路徑,然后直接離開C:\\R\\Library
。面對同樣的問題(避免網絡中的默認路徑),我想出了這個解決方案,並提供了其他答案中給出的提示。
解決方案是編輯Rprofile
文件以覆蓋默認情況下指向主目錄的變量R_LIBS_USER
。
這里的步驟:
~\\target
。Rprofile
文件。 就我而言,它位於C:\\Program Files\\R\\R-3.3.3\\library\\base\\R\\Rprofile
。R_LIBS_USER
的定義。 就我而言,我將這一行file.path(Sys.getenv("R_USER"), "R",
替換為file.path("~\\target", "R",
.支持此解決方案的文檔在這里
原始文件:
if(!nzchar(Sys.getenv("R_LIBS_USER")))
Sys.setenv(R_LIBS_USER=
file.path(Sys.getenv("R_USER"), "R",
"win-library",
paste(R.version$major,
sub("\\..*$", "", R.version$minor),
sep=".")
))
修改后的文件:
if(!nzchar(Sys.getenv("R_LIBS_USER")))
Sys.setenv(R_LIBS_USER=
file.path("~\target", "R",
"win-library",
paste(R.version$major,
sub("\\..*$", "", R.version$minor),
sep=".")
))
我為此苦苦掙扎了一段時間,因為我的工作計算機(使用 Windows 10)在網絡驅動器上創建了默認用戶庫,這會使 R 和 RStudio 的速度降低到無法使用的狀態。
如果這對某人有幫助,這是我發現的最簡單的方法,不需要管理員權限:
C:\\Users\\username\\R\\win-library\\rversion
(例如,類似: C:\\Users\\janebloggs\\R\\win-library\\3.6
).Renviron
文件,並在其中編寫一行,將R_LIBS_USER
變量定義為您的自定義路徑: R_LIBS_USER=C:\\Users\\janebloggs\\R\\win-library\\3.6
(也可以隨意添加注釋,行以#
開頭)
如果.Renviron
文件存在,R 將在啟動時讀取它並使用其中定義的變量,然后再運行.Rprofile
的代碼。 你可以在help(Startup)
閱讀它。
現在它應該在會話之間保持不變!
將包存儲在網絡驅動器上會大大降低 R/R Studio 的性能,並且由於必須通過服務器檢索和推送數據的瓶頸,您需要花費大量時間等待庫加載/安裝回到您的本地主機。 有關如何在本地計算機上創建 .RProfile 的說明,請參閱以下內容:
Sys.getenv("HOME")
以獲取您的主目錄(這是您的 .RProfile 將被存儲的地方,R 將始終檢查那里的包 - 如果包存儲在那里,則它在網絡上).Rprofile
的文件並將其放置在:\\YOUR\\HOME\\DIRECTORY\\ON_NETWORK
(在 R 控制台中鍵入Sys.getenv("HOME")
后獲得的目錄).Rprofile
文件內容應該是這樣的: #search 2 places for packages- install new packages to first directory- load built-in packages from the second (this is from your base R package- will be different for some)
.libPaths(c("C:\Users\xxxxxx\Documents\R\3.4", "C:/Program Files/Microsoft/R Client/R_SERVER/library"))
message("*** Setting libPath to local hard drive ***")
#insert a sleep command at line 12 of the unpackPkgZip function. So, just after the package is unzipped.
trace(utils:::unpackPkgZip, quote(Sys.sleep(2)), at=12L, print=TRUE)
message("*** Add 2 second delay when installing packages, to accommodate virus scanner for R 3.4 (fixed in R 3.5+)***")
# fix problem with tcltk for sqldf package: https://github.com/ggrothendieck/sqldf#problem-involvling-tcltk
options(gsubfn.engine = "R")
message("*** Successfully loaded .Rprofile ***")
現在您可以在本地主機上享受更快的應用程序性能,而不是將包存儲在網絡上並減慢一切。
經過幾個小時的嘗試以多種方式解決問題,其中一些在此處進行了描述,對我而言(在 Win 10 上),創建 Renviron 文件的選項有效,但與上面所寫的略有不同。
任務是更改變量 R_LIBS_USER 的值。 要做到這一點,需要兩個步驟:
R_LIBS_USER = "C:/R/Library"
之后,重新啟動 R 並使用.libPaths()
確認默認目錄已更改。
我想我嘗試了上述所有方法,但對我不起作用。 不過,這有效:
在主目錄中,創建一個名為“.Renviron”的文件
在該文件中,寫入:
.libPaths(new = "/my/path/to/libs")
保存並重新啟動 R 如果你打開了它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.