如何自动加载R中的包?

时间:2012-04-24 15:10:06

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

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

4 个答案:

答案 0 :(得分:71)

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 系统默认值。

由于你可能希望加载所有默认包,然后另外加载(而不是加载一些默认包),你可以放

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。

答案 1 :(得分:15)

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

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

答案 2 :(得分:8)

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

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

答案 3 :(得分:1)

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

但请注意,R将读取此文件,然后加载R基本软件包。见?Startup

  

请注意,当网站和用户个人资料文件仅来源时   基础包已加载,

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

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

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

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

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