簡體   English   中英

如何更改 R 包的默認庫路徑

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

  1. 創建文件夾C:\\R\\Library
  2. 單擊Start --> Control Panel --> User Accounts --> Change my environmental variables
  3. 彈出Environmental Variables窗口。 如果您看到R_LIBS_USER ,請突出顯示它並單擊Edit 否則單擊New 這兩個操作都會打開一個窗口,其中包含VariableValue字段。
  4. 就我而言, R_LIBS_USER已經存在,並且該值是我桌面的路徑。 我將我創建的文件夾添加到路徑中,如上所述,用分號分隔。 C:\\R\\Library;C:\\Users\\Eric.Krantz\\Desktop\\R stuff\\Packages 注意:我可以刪除桌面位置的路徑,然后直接離開C:\\R\\Library

面對同樣的問題(避免網絡中的默認路徑),我想出了這個解決方案,並提供了其他答案中給出的提示。

解決方案是編輯Rprofile文件以覆蓋默認情況下指向主目錄的變量R_LIBS_USER

這里的步驟:

  1. 為庫創建目標文件夾,例如~\\target
  2. 找到Rprofile文件。 就我而言,它位於C:\\Program Files\\R\\R-3.3.3\\library\\base\\R\\Rprofile
  3. 編輯文件並更改變量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)閱讀它。

現在它應該在會話之間保持不變!

網絡上的 Windows 10

將包存儲在網絡驅動器上會大大降低 R/R Studio 的性能,並且由於必須通過服務器檢索和推送數據的瓶頸,您需要花費大量時間等待庫加載/安裝回到您的本地主機。 有關如何在本地計算機上創建 .RProfile 的說明,請參閱以下內容:

  1. 創建一個名為 C:\\Users\\xxxxxx\\Documents\\R\\3.4 的目錄(或您使用的任何 R 版本,以及您將存儲本地 R 包的位置 - 您的目錄位置可能與我的不同)
  2. 在 R 控制台上,鍵入Sys.getenv("HOME")以獲取您的主目錄(這是您的 .RProfile 將被存儲的地方,R 將始終檢查那里的包 - 如果包存儲在那里,則它在網絡上)
  3. 創建一個名為.Rprofile的文件並將其放置在:\\YOUR\\HOME\\DIRECTORY\\ON_NETWORK (在 R 控制台中鍵入Sys.getenv("HOME")后獲得的目錄)
  4. .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 ***")
  1. 重新啟動 R Studio 並驗證您是否看到上述消息已顯示。

現在您可以在本地主機上享受更快的應用程序性能,而不是將包存儲在網絡上並減慢一切。

經過幾個小時的嘗試以多種方式解決問題,其中一些在此處進行了描述,對我而言(在 Win 10 上),創建 Renviron 文件的選項有效,但與上面所寫的略有不同。

任務是更改變量 R_LIBS_USER 的值。 要做到這一點,需要兩個步驟:

  1. 在文件夾\\Program\\etc\\中創建名為Renviron(不帶點)的文件(Program是安裝R的目錄——例如,對我來說是C:\\Program Files\\R\\R-4.0.0\\etc )
  2. 使用新路徑在 Renviron 中插入一行: R_LIBS_USER = "C:/R/Library"

之后,重新啟動 R 並使用.libPaths()確認默認目錄已更改。

我想我嘗試了上述所有方法,但對我不起作用。 不過,這有效:

  1. 在主目錄中,創建一個名為“.Renviron”的文件

  2. 在該文件中,寫入:

     .libPaths(new = "/my/path/to/libs")
  3. 保存並重新啟動 R 如果你打開了它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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