簡體   English   中英

如何在 R 中自動加載包?

[英]How to load packages in R automatically?

你能給我建議一種在 R 中自動加載包的方法嗎? 我的意思是,我想在 R 中啟動一個會話而無需多次使用library('package name') 假設我下載了下次啟動 R 時要使用的所有軟件包。

library(foo)放在您的.Rprofile文件中或設置R_DEFAULT_PACKAGES :參見?Rprofile ...

特別是(因為?Rprofile很長並且可能令人生畏):

如果您在啟動時需要一組不同於默認軟件包的軟件包,請在“.Rprofile”或“Rprofile.site”文件中插入對“options”的調用。 例如,'options(defaultPackages = character())' 不會在啟動時附加額外的包(只有 'base' 包)(或在運行 R 之前將 'R_DEFAULT_PACKAGES=NULL' 設置為環境變量)。 使用 'options(defaultPackages = "")' 或 'R_DEFAULT_PACKAGES=""' 強制 R系統默認值。

由於您可能確實希望加載所有默認包,然后再加載額外的包(而不是不加載某些默認包),因此您可以將

library("mypackage1")
library("mypackage2")
[etc.]

或使用options(defaultPackages=...)

options(defaultPackages=c(getOption("defaultPackages"),
       "mypackage1","mypackage2", ... [etc.]))

在您的.Rprofile您想要的包附加到標准默認值中。

編輯(從評論中復制)重新讓它Rstudio 中工作: http ://rstudio.org/docs/using/workspaces 建議 Rstudio 執行.Rprofile然后“執行 R Startup [ http://stat .ethz.ch/R-manual/R-patched/library/base/html/Startup.html ]”(與?Rprofile相同)。 它是否查看Rprofile.site是不明確的。

編輯 #2 :根據下面的評論,它確實適用於 Rstudio 的最新版本。

有一個名為 .Rprofile 的文件,它只不過是一個腳本,每次啟動 R 的新會話時都會運行該腳本。

您需要做的是向其中添加library(package) 如果您使用的是 Unix,它可能作為隱藏文件位於您的主文件夾中。

關於自定義 R 啟動的 Quick-R 頁面包含的信息與 Ben 和 Joao 的答案基本相同,但可能更清晰一些。 在您的主文件夾(Windows 上的文檔)中創建具有所需更改的Rprofile.site文件的副本,並將其.Rprofile

編輯:我注意到 R 3.0.0 不再從 Documents 文件夾中查看,而是在 Windows 7 下使用用戶的主目錄(用戶名)。不過,這可能是一個安裝問題(即我碰巧“錯誤地”安裝了 R之前)。 但是,此答案中鏈接的 Quick-R 頁面說明了正確的方法。 如果其他人遇到此問題,解決方案是將.Rprofile復制到用戶的主目錄。

快速回答是您應該按照每個人的建議將 R 包放在.Rprofile文件中。

但請注意,R 將讀取此文件,然后加載 R 基礎包 ?Startup 看

請注意,當獲取站點和用戶配置文件時,僅加載基本包,

如果您要加載的包增強/覆蓋某些 R 基本函數,這可能會導致問題。 以 tidyverse::filter 為例,請參見: https : //github.com/tidyverse/dplyr/issues/1611

到目前為止,我可以看到兩種解決方案:

  1. .Rprofile文件的第一行使用.First.sys() :這是通常在讀取 .Rprofile 后運行的命令,它在getOption("defaultPackages")中加載包。

  2. 更新選項defaultPackages :不要在 .Rprofile 中使用library() ,而是使用類似的東西。

     old <- getOption("defaultPackages") options(defaultPackages = c(old, "tidyverse"))

暫無
暫無

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

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