[R] Remove site path from .libPaths

Duncan Murdoch murdoch.duncan at gmail.com
Fri Feb 15 16:06:02 CET 2013


On 13-02-15 9:54 AM, Rainer M Krug wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 15/02/13 15:41, Duncan Murdoch wrote:
>> On 13-02-15 9:28 AM, Rainer M Krug wrote: Hi
>>
>> I am sure I am missing something really basic, but I can't figure it out.
>>
>> I want to start R so that I can specify the location for the Library tree. In principel
>> simple:
>>
>> As I only want it dependent on the directory I stat R in, I put a .Rprofile file in the
>> directory.
>>
>> My default path is:
>>
>>>>> .libPaths()
>> [1] "/home/rkrug/R/i686-pc-linux-gnu-library/2.15" [2] "/usr/lib/R/site-library" [3]
>> "/usr/lib/R/library"
>>>>>
>>
>> But I want to have it
>>
>>>>> .libPaths()
>> [1] "/home/rkrug/THE_DIRECTORY/library" [2] "/usr/lib/R/library"
>>>>>
>>
>> The first part is easy:
>>
>> .libPaths("/home/rkrug/THE_DIRECTORY/library")
>>
>> but how can I remove the site library?
>>
>> If I set
>>
>> In R 15.2 under Ubuntu, started with
>>
>> R --vanilla
>>
>>>>> .libPaths()
>> [1] "/home/rkrug/R/i686-pc-linux-gnu-library/2.15" [2] "/usr/lib/R/site-library" [3]
>> "/usr/lib/R/library"
>>>>> .Library.site
>> [1] "/usr/lib/R/site-library" "/usr/lib/R/library"
>>>>> .Library
>> [1] "/usr/lib/R/library"
>>>>> .Library.site <- "" .Library.site
>> [1] ""
>>>>> .libPaths()
>> [1] "/home/rkrug/R/i686-pc-linux-gnu-library/2.15" [2] "/usr/lib/R/site-library" [3]
>> "/usr/lib/R/library"
>>>>> .libPaths("") .libPaths()
>> [1] "/usr/lib/R/site-library" "/usr/lib/R/library"
>>>>> .Library
>> [1] "/usr/lib/R/library"
>>>>> .Library.site
>> [1] ""
>>>>>
>>
>>
>>>>> .libPaths("") .libPaths()
>> [1] "/usr/lib/R/site-library" "/usr/lib/R/library"
>>>>>
>>
>> even executing
>>
>>>>> .libPaths(.libPaths())
>>
>> does not change anything.
>>
>> Am I missing something or is there a bug in .libPaths()?
>>
>>> I don't think there is a bug.  As ?.libPaths says,
>>
>>> "Function .libPaths always uses the values of .Library and .Library.site in the base
>>> namespace. .Library.site can be set by the site in ‘Rprofile.site’, which should be followed
>>> by a call to .libPaths(.libPaths()) to make use of the updated value."
>>
>>> So you can't change the value of .Library.site after starting R.  You'll need to use
>>> environment variables (as described on that page) to do it.
>
>
> Thanks for the clarification - the use of the word "site" in "set by the site in ‘Rprofile.site’ "
> was not clear to me. I thik it would be much clearer, if it states that the variables .Library and
> .Library.site can not be changed while R is running although it looks as if they can be changed
> (but then new ones in the top environment are created).
>
> Now just one more question: where can I see that
>
> .Library <- "/A/New/Existing/Directory"
>
> has no impact?

If you look at environment(.libPaths) you'll see that it is not 
.GlobalEnv, so the .lib.loc assignment might not happen where you think. 
  Indeed,

ls(environment(.libPaths), all=TRUE)

will show that it contains one object, .lib.loc.  You can modify that 
variable, but it's quite a risky (in the sense of being undocumented and 
unsupported) thing to do.

Duncan Murdoch

>
> I expected to see this in the code of .libPaths, but I didn't:
>
>> .libPaths
> function (new)
> {
>      if (!missing(new)) {
>          new <- Sys.glob(path.expand(new))
>          paths <- unique(normalizePath(c(new, .Library.site, .Library),
>              "/"))
>          .lib.loc <<- paths[file.info(paths)$isdir %in% TRUE]
>      }
>      else .lib.loc
> }
> <bytecode: 0x88e7640>
> <environment: 0x88e685c>
>>
>
> Thanks,
>
> Rainer
>
>
>
>>
>>> Duncan Murdoch
>>
>>
>> Cheers,
>>
>> Rainer
>>
>>
>>
>>>
>>> ______________________________________________ R-help at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide
>>> http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained,
>>> reproducible code.
>>>
>>
>
> - --
> Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phys.
> (Germany)
>
> Centre of Excellence for Invasion Biology
> Stellenbosch University
> South Africa
>
> Tel :       +33 - (0)9 53 10 27 44
> Cell:       +33 - (0)6 85 62 59 98
> Fax :       +33 - (0)9 58 10 27 44
>
> Fax (D):    +49 - (0)3 21 21 25 22 44
>
> email:      Rainer at krugs.de
>
> Skype:      RMkrug
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.11 (GNU/Linux)
> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
>
> iQEcBAEBAgAGBQJRHkwmAAoJENvXNx4PUvmCnEcIAKPC2wxPWSX5Y/h5jfCg5b9g
> OKsGsmL/0bu7MdfoMFKMdFL+TPQ1werGEgcKlmwUuZ/QGzd21BkN+C/Dl5gXSYRB
> gHCGrQWUSemUlt+V2BTW1IaoksLhbj+QQBVNJ767eO5LkoIFujIwrCZ8o7upn/cy
> 6W3EhP+utHWz2C3+/gUR/c5FqPM6r4+9JiNVCxRzjCU/8/wip6dmoQRpZGXgAb8d
> Koa5lRJlMUV0IMItMAoIIKzr1IkXaZ91VcTI1X13UTvzT7R/v5xgOnfJPEb5DRqI
> clFGa8VaWx2RfmU6ihlmj8k8q4lOyI1hNXE6q8wX7aI3ERW4gSFCuDKASshyZXM=
> =XGla
> -----END PGP SIGNATURE-----
>



More information about the R-help mailing list