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 change and remove default library location?
Here be dragons.
assign(".lib.loc", "\your\preferred\library", envir = environment(.libPaths))
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.
Related Topics
Fastest Way to Find Second (Third...) Highest/Lowest Value in Vector or Column
Create Sequence of Repeated Values, in Sequence
Horizontal/Vertical Line in Plotly
How to Open CSV File in R When R Says "No Such File or Directory"
Create Group Number For Contiguous Runs of Equal Values
Reshaping Time Series Data from Wide to Tall Format (For Plotting)
Identifying Duplicate Columns in a Dataframe
Add a New Column of the Sum by Group
Customize Ggplot2 Axis Labels With Different Colors
How to Convert a Table to a Data Frame
Reshape Multiple Values At Once
Finding Rows Containing a Value (Or Values) in Any Column
Subset a Dataframe Between 2 Dates
How to Calculate the Co-Occurrence in the Table
Count Nas Per Row in Dataframe
How to Put a Transformed Scale on the Right Side of a Ggplot2
Difference: "Compile Pdf" Button in Rstudio Vs. Knit() and Knit2Pdf()