Question

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.

Was it helpful?

Solution

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

OTHER TIPS

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.

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.

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"))
    
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top