[Rd] how to control which version of a package library() installs?
Tony Plate
tplate at acm.org
Fri Apr 13 23:46:17 CEST 2007
Thank you! I had not realized that the name space remained loaded.
When I did unloadNamespace("ExamplePackage") after the detach() I got
what I wanted.
Maybe the following sentence might be a useful addition to the "Details"
or "Notes" section of the help page for detach?:
To detach() and reattach() a package you will probably need to use
unloadNamespace("somePackage") after detach("package:somePackage")
-- Tony Plate
Prof Brian Ripley wrote:
> On Fri, 13 Apr 2007, Tony Plate wrote:
>
>> library() seems to remember the location of a package when I give it a
>> lib.loc, and then use that version thereafter, even if I don't supply
>
> Not quite: it notices that it is loaded and does not load it again,
> possibly attaching the exports of a still-loaded namespace.
>
>> lib.loc again. Is there any way I can load different versions of a
>> package in one R session? -- I don't seem to able to simply detach the
>> package and then load a different version from a different library
>> location.
>
> Without the output of search(), searchpath() and loadedNamespace() we
> cannot know what happened here. But here is an example of my own
>
>> library(Matrix, lib.loc="~/R/test26")
> Loading required package: lattice
>> searchpaths()
> [1] ".GlobalEnv"
> [2] "/data/gannet/ripley/R/test26/Matrix"
> ...
>> detach(2)
>> search()
> [1] ".GlobalEnv" "package:lattice" "package:stats"
> [4] "package:graphics" "package:grDevices" "package:utils"
> [7] "package:datasets" "package:methods" "Autoloads"
> [10] "package:base"
>> library(Matrix, lib.loc="~/R/test-library")
>> searchpaths()
> [1] ".GlobalEnv"
> [2] "/data/gannet/ripley/R/test26/Matrix"
> ...
>
> The point is that the namespace Matrix is still loaded.
>
>> detach(2)
>> unloadNamespace("Matrix")
>> library(Matrix, lib.loc="~/R/test-library")
>> searchpaths()
> [1] ".GlobalEnv"
> [2] "/data/gannet/ripley/R/test-library/Matrix"
>
> Might your example be similar?
>
>
>> $ R
>> [...startup info...]
>> > # only version we currently know about is in the standard library
>> > .find.package("ExamplePackage")
>> [1] "c:/R/R-2.4.1/library/ExamplePackage"
>> > # load a version from a different library e:/devinst
>> > library(ExamplePackage, lib.loc="e:/devinst")
>> > # and check we've got the right version ... yes
>> > system.file(package="ExamplePackage")
>> [1] "e:/devinst/ExamplePackage"
>> > .find.package("ExamplePackage")
>> [1] "e:/devinst/ExamplePackage"
>> > detach(2)
>> >
>> > # Now I'd like to load the version in the standard library.
>> > # .find.package() finds the version I want
>> > .find.package("ExamplePackage")
>> [1] "c:/R/R-2.4.1/library/ExamplePackage"
>> > # but library() loads the same version it did before, even
>> > # though I don't supply lib.loc, and .libPaths is untouched.
>> > library(ExamplePackage)
>> > system.file(package="ExamplePackage")
>> [1] "e:/devinst/ExamplePackage"
>> > .find.package("ExamplePackage")
>> [1] "e:/devinst/ExamplePackage"
>> > .libPaths()
>> [1] "c:/R/R-2.4.1/library"
>> > sessionInfo()
>> R version 2.4.1 (2006-12-18)
>> i386-pc-mingw32
>>
>> locale:
>> LC_COLLATE=English_United States.1252;LC_CTYPE=English_United
>> States.1252;LC_MON
>> ETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United
>> States.1252
>>
>>
>> attached base packages:
>> [1] "stats" "graphics" "grDevices" "utils" "datasets" "methods"
>> [7] "base"
>>
>> other attached packages:
>> ExamplePackage
>> "1.0"
>> >
>>
>> Am I doing something wrong here? I can't find any mention of
>> persistence of package location in ?library.
>>
>> thanks for any help or suggestions,
>>
>> Tony Plate
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>
More information about the R-devel
mailing list