67

你能建议我一种在 R 中自动加载包的方法吗?我的意思是,我想在 R 中启动一个会话,而无需library('package name')多次使用。假设我下载了下次启动 R 时要使用的所有包。

4

4 回答 4

80

放入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 启动中描述的其他操作 [ http://stat.ethz .ch/R-manual/R-patched/library/base/html/Startup.html ]"(与 相同?Rprofile)。看不看都是模棱两可的Rprofile.site

编辑#2:根据下面的评论,它确实适用于最新版本的 Rstudio。

于 2012-04-24T15:13:30.200 回答
17

有一个名为 .Rprofile 的文件,它只是一个脚本,每次启动 R 的新会话时都会运行。

你需要做的就是添加library(package)它。如果您使用的是 Unix,它可能作为隐藏文件位于您的主文件夹中。

于 2012-04-24T15:15:15.643 回答
10

关于自定义 R 启动的 Quick-R 页面包含的信息与 Ben 和 Joao 的答案基本相同,但可能更清晰一些。Rprofile.site在您的主文件夹(Windows 上的文档)中创建具有所需更改的文件副本并调用它.Rprofile

编辑:我注意到 R 3.0.0 不再从 Documents 文件夹中查找,而是在 Windows 7 下使用用户的主目录(用户名)。但这可能是一个安装问题(即我碰巧“错误地”安装了 R之前)。但是,此答案中链接的 Quick-R 页面告诉了这样做的正确方法。如果其他人遇到这个问题,解决方案是复制.Rprofile到用户的主目录。

于 2013-02-05T13:07:27.800 回答
6

快速的回答是,您应该按照每个人的建议将您的 R 包放入.Rprofile文件中。

但是请注意,R 将读取此文件,然后加载 R 基础包。从?Startup看:

请注意,当获取站点和用户配置文件时,仅加载基本包,

如果您要加载的包增强/覆盖某些 R 基本函数,这可能会导致问题。例如,请参见 tidyverse::filter:https ://github.com/tidyverse/dplyr/issues/1611

到目前为止,我可以看到两种解决方案:

  1. .First.sys()在文件的第一行使用.Rprofile:这是通常在读取 .Rprofile 后运行的命令,用于加载 .Rprofile 中的包getOption("defaultPackages")

  2. 更新选项defaultPackages:不要library()在你的 .Rprofile 中使用,而是类似的东西。

    old <- getOption("defaultPackages")
    options(defaultPackages = c(old, "tidyverse"))
    
于 2018-02-22T23:31:27.327 回答