How to load packages in R automatically?
RLoadingR PackageR FaqDefaultsR Problem Overview
Could you suggest me a way for loading packages in R automatically? I mean, I want to start a session in R without needing to use library('package name')
several times. Suppose I downloaded all packages I'll want to use the next time I start R.
R Solutions
Solution 1 - R
Put library(foo)
in your .Rprofile
file or set R_DEFAULT_PACKAGES
: see ?Rprofile
...
In particular (because ?Rprofile
is long and potentially intimidating):
> If you want a different set of packages than the default ones when you > start, insert a call to ‘options’ in the ‘.Rprofile’ or > ‘Rprofile.site’ file. For example, ‘options(defaultPackages = > character())’ will attach no extra packages on startup (only the > ‘base’ package) (or set ‘R_DEFAULT_PACKAGES=NULL’ as an environment > variable before running R). Using ‘options(defaultPackages = "")’ or > ‘R_DEFAULT_PACKAGES=""’ enforces the R system default.
Since you probably do want all of the default packages loaded, and then extra ones in addition (rather than, say, not loading some of the default packages), you can either put
library("mypackage1")
library("mypackage2")
[etc.]
or using options(defaultPackages=...)
:
options(defaultPackages=c(getOption("defaultPackages"),
"mypackage1","mypackage2", ... [etc.]))
in your .Rprofile
to append your desired packages to the standard defaults.
edit (copied from comment) re getting this to work in [Rstudio][1]:
http://rstudio.org/docs/using/workspaces suggests that Rstudio executes .Rprofile
and then "Performs the other actions described in R Startup [ http://stat.ethz.ch/R-manual/R-patched/library/base/html/Startup.html ]" (which is the same as ?Rprofile
). It is ambiguous whether it looks at Rprofile.site
or not.
edit #2: according to comment below, it does work with a recent version of Rstudio.
[1]: http://www.rstudio.org "Rstudio"
Solution 2 - R
There is a file called .Rprofile that is nothing but a script that is run everytime you start a new session of R.
What you need to do is add library(package)
to it. If you're using Unix, it's probably on your home folder as a hidden file.
Solution 3 - R
Quick-R page on customizing R startup contains basically the same information than in Ben's and Joao's answers, but it is perhaps a bit clearer. Create a copy of Rprofile.site
file with desired changes in your home folder (Documents on Windows) and call it .Rprofile
EDIT: I noticed that R 3.0.0 does not look from Documents folder any longer, but uses user's home directory (user name) under Windows 7. This might be an installation issue, though (i.e. that I happened to install R "wrongly" previously). However, the Quick-R page linked in this answer tells the right way of doing this. If somebody else is encountering this problem, the solution is to copy .Rprofile
to the user's home directory.
Solution 4 - R
The quick answer is that you should put your R packages in the .Rprofile
file, as everyone suggested.
Note however that R will read this file, and then load the R base packages. See from ?Startup:
> Note that when the site and user profile files are sourced only the > base package is loaded,
This can cause problems if the package you want to load enhances/overwrite some R base functions. See for example with tidyverse::filter: https://github.com/tidyverse/dplyr/issues/1611
I can see two solutions so far:
-
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 ingetOption("defaultPackages")
. -
Update the option defaultPackages: don't use
library()
in your .Rprofile, but something like.old <- getOption("defaultPackages") options(defaultPackages = c(old, "tidyverse"))