Change R default library path using .libPaths in Rprofile.site fails to work
I generally try to keep all of my packages in one library, but if you want to add a library why not append the new library (which must already exist in your filesystem) to the existing library path?
.libPaths( c( .libPaths(), "~/userLibrary") )
# obviously this would need to be a valid file directory in your OS
# min just happened to be on a Mac that day
Or (and this will make the userLibrary the first place to put new packages):
.libPaths( c( "~/userLibrary" , .libPaths() ) )
Then I get (at least back when I wrote this originally):
> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/2.15/Resources/library"
[2] "/Users/user_name/userLibrary"
The .libPaths
function is a bit different than most other nongraphics functions. It works via side-effect. The functions Sys.getenv
and Sys.setenv
that report and alter the R environment variables have been split apart but .libPaths
can either report or alter its target.
The information about the R startup process can be read at ?Startup
help page and there is RStudio material at: https://support.rstudio.com/hc/en-us/articles/200549016-Customizing-RStudio
In your case it appears that RStudio is not respecting the Rprofile.site settings or perhaps is overriding them by reading an .Rprofile setting from one of the RStudio defaults. It should also be mentioned that the result from this operation also appends the contents of calls to .Library
and .Library.site
, which is further reason why an RStudio- (or any other IDE or network installed-) hosted R might exhibit different behavior.
Since Sys.getenv()
returns the current system environment for the R process, you can see the library and other paths with:
Sys.getenv()[ grep("LIB|PATH", names(Sys.getenv())) ]
The two that matter for storing and accessing packages are (now different on a Linux box):
R_LIBS_SITE /usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library
R_LIBS_USER /home/david/R/x86_64-pc-linux-gnu-library/3.5.1/
How do I change the default library path for R packages
See help(Startup)
and help(.libPaths)
as you have several possibilities where this may have gotten set. Among them are
- setting
R_LIBS_USER
- assigning
.libPaths()
in.Rprofile
orRprofile.site
and more.
In this particular case you need to go backwards and unset whereever \\\\The library/path/I/don't/want
is set.
To otherwise ignore it you need to override it use explicitly i.e. via
library("somePackage", lib.loc=.libPaths()[-1])
when loading a package.
Change default library path for one session only in R
Functions in R that load packages do so by querying the active library paths, as provided by .libPaths()
:
> .libPaths()
[1] "/Users/kevinushey/Library/R/4.0/library"
[2] "/Library/Frameworks/R.framework/Versions/4.0/Resources/library"
You can customize the library paths used in a particular session with the same function -- just pass it the library paths you wish to use. For example:
> dir.create("~/r-lib")
> .libPaths("~/r-lib")
> .libPaths()
[1] "/Users/kevinushey/r-lib"
[2] "/Library/Frameworks/R.framework/Versions/4.0/Resources/library"
Then library()
, ::
and so on will load packages from those library paths.
Note that system-wide and site-wide library paths will always be appended to your requested library paths -- see ?.libPaths
for more details.
How to properly set up the library directory/path in R
I would suggest you don't want a single directory for packages, since a number of base packages come with R. Instead you want a single directory where a user will install packages.
Create a .Renviron
file and add the environment variable R_LIBS
pointing to the directory you want your packages to end up in. On my machine, I have
# Linux
R_LIBS=/data/Rpackages/
Or if you have Windows something like
# Windows
R_LIBS=C:/R/library
Your .libPaths()
would now look something like
R> .libPaths()
[1] "/data/Rpackages" "/usr/lib/R/site-library"
This means that when I install a package it goes to /data/ncsg3/Rpackages
If you really want to only have a single directory, you can set the R_LIBS_SITE
variable to omit the default directories.
How to change and remove default library location?
Here be dragons.
assign(".lib.loc", "\your\preferred\library", envir = environment(.libPaths))
Related Topics
Rstudio Suddenly Stopped Showing Plots in the Plot Pane
Conditionally Remove Rows from a Database Using R
How to Give Subtitles for Subplot in Plot_Ly Using R
Minimum (Or Maximum) Value of Each Row Across Multiple Columns
Faster Ways to Calculate Frequencies and Cast from Long to Wide
Error in If/While (Condition) {: Missing Value Where True/False Needed
Plot Two Graphs in Same Plot in R
Installing Older Version of R Package
Elegant Way to Check For Missing Packages and Install Them
How to Plot All the Columns of a Data Frame in R
Adding Value from One Data.Frame to Another Data.Frame by Matching a Variable
Add Column Values Based on Other Columns in Data Frame Using for and If
Easier Way to Use Grepl and Ifelse Across Multiple Columns
How to Generate the First N Terms in the Series:
Add Legend to Ggplot2 Line Plot
How to Specifically Order Ggplot2 X Axis Instead of Alphabetical Order
Selecting Data Frame Rows Based on Partial String Match in a Column