281

The install.packages() function in R is the automatic unzipping utility that gets and install packages in R.

  1. How do I find out what directory R has chosen to store packages?

  2. How can I change the directory in which R stores and accesses packages?

4 Answers 4

322

The install.packages command looks through the .libPaths() variable. Here's what mine defaults to on OSX:

> .libPaths()
[1] "/Library/Frameworks/R.framework/Resources/library"

I don't install packages there by default, I prefer to have them installed in my home directory. In my .Rprofile, I have this line:

.libPaths( "/Users/tex/lib/R" )

This adds the directory /Users/tex/lib/R to the front of the .libPaths() variable.

3
  • this is what I'd like to do, but how do I access and .Rprofile? The prompt doesn't recognize it as either an object or a function
    – Milktrader
    Commented Apr 10, 2010 at 22:06
  • 10
    It is a file. Again, read the fine manual, and/or help(Startup). Commented Apr 10, 2010 at 22:12
  • In Windows, I have: C:\Users\MyName\Documents\R\win-library\3.5
    – A Fog
    Commented Nov 19, 2021 at 7:35
67

This is documented in the 'R Installation and Administration' manual that came with your installation.

On my Linux box:

R> .libPaths()
[1] "/usr/local/lib/R/site-library" "/usr/lib/R/site-library"      
[3] "/usr/lib/R/library"           
R> 

meaning that the default path is the first of these. You can override that via an argument to both install.packages() (from inside R) or R CMD INSTALL (outside R).

You can also override by setting the R_LIBS_USER variable.

13
  • 5
    Have you discovered 'help(install.packages)' yet? Also, see 'help(Startup)' as per my last comment. And do read those manuals. Lastly, on *doze I tend to just set R_LIBS="C:/opt/R/library" in a file .Renviron. I know you are going to ask about that too -- so do read help(Startup). Ok? ;-) Commented Apr 10, 2010 at 22:30
  • 4
    I've got a dozen R manuals on my Kindle (including the 3,000+ page one) and wasn't aware of the Startup help file. I've been reading the manuals and hit a dead-end. Go figure it was a simple answer all along. Do I lose points for RTFM questions <- I don't have many to lose. Thanks again Dirk. See you at R/Finance next week. Ramping up on R skills as best I can so I don't get dusted during the presentations.
    – Milktrader
    Commented Apr 10, 2010 at 22:37
  • 1
    The 3000+ page is a collation of all the help page -- least helpful. The aforemention 'Installation and Admin' one should be very useful for what you are after here. Commented Apr 11, 2010 at 0:58
  • 1
    great answer! just what I was looking for!
    – stats_noob
    Commented Mar 25, 2023 at 3:50
  • 1
    @Johan you hit one of many answers I have given on this, maybe try the other ones, maybe come to the r-sig-debian list. It has been hashed out a few times over the years. In short, there is what I do as defaults for the package but there is what you may do at your end. Commented May 5, 2023 at 19:25
20

Thanks for the direction from the above two answerers. James Thompson's suggestion worked best for Windows users.

  1. Go to where your R program is installed. This is referred to as R_Home in the literature. Once you find it, go to the /etc subdirectory.

    C:\R\R-2.10.1\etc
    
  2. Select the file in this folder named Rprofile.site. I open it with VIM. You will find this is a bare-bones file with less than 20 lines of code. I inserted the following inside the code:

    # my custom library path
    .libPaths("C:/R/library")
    

    (The comment added to keep track of what I did to the file.)

  3. In R, typing the .libPaths() function yields the first target at C:/R/Library

NOTE: there is likely more than one way to achieve this, but other methods I tried didn't work for some reason.

2
  • 2
    I copy pasted said line .libPaths=("C:/R/library") to my Rprofile.site file. I launch R 2.13.1 64 bit and get this error: Error: cannot change value of locked binding for '.libPaths' I am using Windows 7.
    – Fred
    Commented Jul 15, 2011 at 15:18
  • 2
    See Dave's answer: it should be .libPaths("...") (a call and not an assignment).
    – CodeFox
    Commented Oct 29, 2018 at 6:20
1

You do not want the '='

Use .libPaths("C:/R/library") in you Rprofile.site file

And make sure you have correct " symbol (Shift-2)

Not the answer you're looking for? Browse other questions tagged or ask your own question.