如何自动加载R中的包?

nhe*_*121 55 r loading defaults r-faq r-package

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

Ben*_*ker 73

放入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.]
Run Code Online (Sandbox Code Playgroud)

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

options(defaultPackages=c(getOption("defaultPackages"),
       "mypackage1","mypackage2", ... [etc.]))
Run Code Online (Sandbox Code Playgroud)

.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.

  • 抱歉; `foo`是一个老式的"占位符"变量.例如,您可以尝试`library("ggplot2"); 库( "emdbook"); 库( "quantreg"); library("rms")`(作为您可能想要包含的一些真实包的示例). (3认同)
  • +1因为'因为`?Rprofile`很长并且可能令人生畏'.就是这样,也是一个非常紧凑的*和*完整的文档.绝对推荐阅读. (2认同)

Joã*_*iel 15

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

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


Mik*_*kko 9

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

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


Mat*_*fou 5

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

但是请注意,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"))
    
    Run Code Online (Sandbox Code Playgroud)

  • 这个答案指出了其他人没有指出的事情:加载顺序的重要性及其对函数覆盖的影响(例如“plot”与“sp::plot”)。`.First.sys()` 解决方案让我省去了很多麻烦......谢谢! (2认同)