719016
719016

Reputation: 10441

Set default CRAN mirror permanent in R

How can I set a specific CRAN mirror permanently in R?

I want to set it permanently in my laptop so that when I do install.packages(), it won't ask me again which mirror to choose.

Upvotes: 133

Views: 74494

Answers (3)

rinni
rinni

Reputation: 2366

You can set repos in your .Rprofile to restore your choice every time you start R

Edit: to be more precise:

Add

options(repos=c(CRAN="THE URL OF YOUR FAVORITE MIRROR"))

to your .Rprofile, located in the home directory of your user.

You can find a list of CRAN mirrors here.

Example:

# add this line to ~/.Rprofile, restart your R session so it takes effect
options(repos=c(CRAN="https://cran.r-project.org"))

Alternatively, you can set the mirror site-wide in your Rprofile.site. The location of the file is given by ?Startup:

The path of this file is taken from the value of the R_PROFILE environment variable (after tilde expansion). If this variable is unset, the default is R_HOME/etc/Rprofile.site, which is used if it exists (which it does not in a 'factory-fresh' installation).

So do Sys.getenv("R_PROFILE") for the first option, or Sys.getenv("R_HOME") or R.home() for the second option. On macOS, the location of the second is /Library/Frameworks/R.framework/Resources/etc/.

The file may not exist, or you may see the following lines commented out :

# set a CRAN mirror
# local({r <- getOption("repos")
#       r["CRAN"] <- "http://my.local.cran"
#       options(repos=r)})

So remove the comment marks and change "http://my.local.cran" to the correct website, e.g.:

local({r <- getOption("repos")
       r["CRAN"] <- "https://cran.r-project.org"
       options(repos=r)})

Upvotes: 155

Ted M.
Ted M.

Reputation: 392

In one instance, the .Rprofile edit suggested above did not work. However, the following code did:

utils::setRepositories(ind = 0, addURLs = c(CRAN = "YOUR FAVORITE MIRROR"))

where "YOUR FAVORITE MIRROR" is the URL, not the name.

Restart R after editing the .Rprofile. ind = 0 will indicate that you only want the named repository. Additional repositories can be included in the addURLs = option and are comma separated within the character vector.

Upvotes: 1

Patrick
Patrick

Reputation: 1421

In case you are trying to do this in RStudio, you can either do it via the RStudio UI (Tools -> Global Options -> Packages) or use the file ~/.config/rstudio/rstudio-prefs.json and put the following inside for https://cran.rstudio.com/.

{
    "cran_mirror": {
        "name": "Global (CDN)",
        "host": "RStudio",
        "url": "https://cran.rstudio.com/",
        "country": "us",
        "ok": 1,
        "secondary": ""
    }
}

Probably you already have other options set within so you can just add cran_mirror to the list.

The full file on my current system (RStudio Server 2022.02.2 Build 485, Ubuntu 20.04.4 LTS) looks like this:

{
    "initial_working_directory": "~",
    "margin_column": 120,
    "scroll_past_end_of_document": true,
    "highlight_r_function_calls": true,
    "rainbow_parentheses": true,
    "posix_terminal_shell": "bash",
    "default_project_location": "~",
    "jobs_tab_visibility": "shown",
    "source_with_echo": true,
    "save_workspace": "never",
    "load_workspace": false,
    "always_save_history": false,
    "data_viewer_max_columns": 500,
    "cran_mirror": {
        "name": "Global (CDN)",
        "host": "RStudio",
        "url": "https://cran.rstudio.com/",
        "country": "us",
        "ok": 1,
        "secondary": ""
    }
}

Upvotes: -1

Related Questions