【问题标题】:How to load packages in R automatically?如何在 R 中自动加载包?
【发布时间】:2012-05-05 06:12:10
【问题描述】:

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

【问题讨论】:

  • 通常这不是一个好主意,因为它使会话中的所有后续代码都依赖于您的设置,而如果其中包含库调用,那么它将更加独立。如果您尝试与其他人共享您的代码,他们将不会对您很满意,因为他们将无法在没有额外说明的情况下运行您的脚本。
  • 你可以在你的 .Rprofile/Rprofile.site 文件中定义一个 load_extra_packages() 函数来加载你想要的所有包(并打印出它们的名称),然后在开头运行该命令你的会话——这将使你的代码透明,即使不是完全独立的......

标签: r loading r-package r-faq defaults


【解决方案1】:

library(foo) 放入您的.Rprofile 文件或设置R_DEFAULT_PACKAGES:参见?Rprofile ...

尤其是(因为?Rprofile 很长而且可能令人生畏):

如果您想要一组不同的软件包而不是默认软件包,当您 开始,在“.Rprofile”中插入对“options”的调用,或者 “Rprofile.site”文件。例如,'options(defaultPackages = character())' 将不会在启动时附加额外的包(只有 'base' 包)(或将'R_DEFAULT_PACKAGES=NULL' 设置为环境 运行 R) 之前的变量。使用‘options(defaultPackages = "")' 或 ‘R_DEFAULT_PACKAGES=""’ 强制执行 R system 默认值。

由于您可能确实希望加载所有默认包,然后添加额外的包(而不是说,不加载某些默认包),您可以放置​​

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

或使用options(defaultPackages=...):

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

在你的.Rprofile追加你想要的包到标准默认值。

edit(从评论中复制)重新在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 是模棱两可的。

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

【讨论】:

  • +1 表示“因为?Rprofile 很长并且可能令人生畏”。就是这样,也是一个非常紧凑的完整的文档。绝对推荐阅读。
  • 谢谢@Ben Bolker 我尝试在Rprofile.site 文件中添加这一行library(foo),但我没有得到我想要的。 foo 是什么意思?那是什么?它应该是我要加载的确定包的名称吗?
  • 对不起; foo 是一个老式的“占位符”变量。例如,您可以尝试library("ggplot2"); library("emdbook"); library("quantreg"); library("rms")(作为您可能想要包含的一些真实软件包的示例)。
  • 好的,感谢您在这种情况下提供的帮助@BenBolker。您知道如何使用 Rstudio 做同样的事情吗?
  • 我希望 Rstudio 会尊重您的 Rprofile.site 设置,但老实说我不确定。您是否确认您已经有一些东西可以与标准 Rgui 一起使用,并且它与 Rstudio 一起使用?
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    Quick-R page on customizing R startup 包含的信息与 Ben 和 Joao 的答案基本相同,但可能更清楚一些。在您的主文件夹(Windows 上的文档)中创建具有所需更改的 Rprofile.site 文件的副本,并将其命名为 .Rprofile

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

    【讨论】:

      【解决方案4】:

      快速的回答是你应该把你的 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"))
        

      【讨论】:

      • 这个答案发现了其他人没有发现的东西:加载顺序的重要性及其对函数覆盖的影响(例如plot vs sp::plot)。 .First.sys() 解决方案让我省了很多麻烦......谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      相关资源
      最近更新 更多