How to load packages in R automatically?

RLoadingR PackageR FaqDefaults

R 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:

  1. 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").

  2. Update the option defaultPackages: don't use library() in your .Rprofile, but something like.

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionnhern121View Question on Stackoverflow
Solution 1 - RBen BolkerView Answer on Stackoverflow
Solution 2 - RJoão DanielView Answer on Stackoverflow
Solution 3 - RMikkoView Answer on Stackoverflow
Solution 4 - RMatifouView Answer on Stackoverflow