你能否给我推荐一种自动加载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 系统默认设置。.Rprofile
文件中: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中使用。
?Rprofile
文档非常长,可能会让人感到有些吓人。但它也是一份非常紧凑且完整的文档,绝对值得推荐阅读。 - Josh O'Brienfoo
是一个老式的“占位符”变量。例如,你可能会尝试 library("ggplot2"); library("emdbook"); library("quantreg"); library("rms")
(作为一些你可能想要包含的真实软件包的示例)。 - Ben BolkerA
依赖于软件包B
(在DESCRIPTION文件中反映出来)。将library(A)
放入.Rprofile脚本中,在安装软件包B
时会导致错误发生。如果我包括library(B)
或更改defaultPackages
选项,则会发生相同的错误。安装软件包B
时出现的确切错误是Error: package ‘B’ is required by ‘A’ so will not be detached
。 - Jon Claus.Rprofile
之前先安装它们。如果你对此有合理的用例,我建议你提出另一个问题来询问。 - Ben Bolker有一个名为.Rprofile的文件,它实际上只是一个脚本,在每次启动一个新的R会话时都会运行。
你需要做的就是将library(package)
添加到其中。如果你使用的是Unix系统,它可能是一个隐藏文件,位于你的主目录下。
自定义R启动的Quick-R页面包含基本与Ben和Joao的答案相同的信息,但可能更加清晰。在您的主文件夹(Windows上的文档)中创建一个带有所需更改的Rprofile.site
文件的副本,并将其命名为.Rprofile
编辑:我注意到R 3.0.0不再从“文档”文件夹中查找,而是在Windows 7下使用用户的主目录(用户名)。这可能是安装问题,但是在本答案中链接的Quick-R页面说明了正确的方法。如果其他人遇到此问题,则解决方案是将.Rprofile
复制到用户的主目录中。
.Rprofile
文件中,正如大家建议的那样。Use .First.sys()
at the first line of your .Rprofile
file: this is the command that is usually run after reading the .Rprofile, that loads the packages in getOption("defaultPackages")
.
Update the option defaultPackages: don't use library()
in your .Rprofile, but something like.
old <- getOption("defaultPackages")
options(defaultPackages = c(old, "tidyverse"))
plot
和 sp::plot
)。.First.sys()
的解决方案为我节省了很多麻烦...谢谢! - brotherJ4mes
.Rprofile
/Rprofile.site
文件中定义一个load_extra_packages()
函数,加载你想要的所有包(并打印出它们的名称),然后在会话开始时运行该命令--这将使你的代码透明,即使不是完全自包含的... - Ben Bolker