[R] Remove site path from .libPaths

Rainer M Krug r.m.krug at gmail.com
Fri Feb 15 16:45:46 CET 2013


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 15/02/13 16:06, Duncan Murdoch wrote:
> On 13-02-15 9:54 AM, Rainer M Krug wrote: 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.

Ok, thanks for the clarification, and agreed that it is not advisable. I will then go a different
route and start R with given Environmental variables.
Thanks  lot,

Rainer


> 
>> 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.
>>>>> 
>>>> 
> 
>> 
> 

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJRHlgpAAoJENvXNx4PUvmCel0H/jJ0KYNfEryzjnSIt9U9xrk/
cEgnFLRAzoWuBaMvTuPVthiOHIjIPWyiauoZtn9Vju6HALBQAY9h7SWpwMyVIm6y
VwHsRZ3Szbn1kRPkIbHpZFlMHtfFg9I9KlSywBPHjD1FVEUI8TXJSz4padjbmSWc
VHRK88o2YHNAA6ss7AyGjpXuFxwIvCNjxTVitPdaMBqnmoJtO3jIOgcPAp18pLlK
uYv1pvcVKY6yizNwwneMhIO0dqmZMIjL/TT6Z8IT2K7EUOqEtWXQ2DhSFOFBtYGi
olae3hK9I8FI+wS5oD7i86PUNPB8KDya3KnGk1USEKF69nesRbWXU3fuC6BaI+A=
=t0Hg
-----END PGP SIGNATURE-----



More information about the R-help mailing list