[R] getting package version inside .First.lib

Prof Brian Ripley ripley at stats.ox.ac.uk
Thu Jan 27 12:31:01 CET 2005


On Thu, 27 Jan 2005, Liaw, Andy wrote:

>> From: Roger Bivand
>>
>> On Thu, 27 Jan 2005, Prof Brian Ripley wrote:
>>
>>> On Thu, 27 Jan 2005, Adrian Baddeley wrote:
>>>
>>>> Greetings -
>>>>
>>>> Is it possible, inside .First.lib,
>>>> to find out the version number of the package that is
>> being loaded?
>>>>
>>>> If only one version of the package has been installed,
>>>> we could scan the DESCRIPTION file, something like
>>>>
>>>> .First.lib <- function(lib, pkg) {
>>>>    library.dynam("spatstat", pkg, lib)
>>>>    dfile <- system.file("DESCRIPTION", package="spatstat")
>>>>    ttt <- scan(dfile, what="", sep="^M", quiet=TRUE)[2]
>>>
>>> "\n" not "^M", please, and readLines is better than scan here.
>>>
>>>>    vvv <- strsplit(ttt," ")[[1]][2]
>>>>    cat("spatstat version number",vvv,"\n")
>>>> }
>>>>
>>>> but even this does not seem very safe (it makes
>> assumptions about the
>>>> format of the DESCRIPTION file).
>>>
>>> It is better to use read.dcf or the installed description
>> information in
>>> package.rds. Take a look at how library() does this.
>>
>> Or even packageDescription() in utils, which uses read.dcf() and should 
>> be a way of making sure you get the version even if the underlying 
>> formatting changes.
>
> This is how I do it in randomForest (using .onAttach instead of .First.Lib):
>
> .onAttach <- function(libname, pkgname) {
>    RFver <- if (as.numeric(R.version$major) < 2 &&
>                 as.numeric(R.version$minor) < 9.0)
>      package.description("randomForest")["Version"] else
>    packageDescription("randomForest")$Version
>    cat(paste("randomForest", RFver), "\n")
>    cat("Type rfNews() to see new features/changes/bug fixes.\n")
> }

Please don't use functions from utils in such places without explicitly 
loading them from utils unless your package has an explicit dependence on 
utils (and randomForest does not).

There was a good reason why I suggested what I did: you don't need the 
utils namespace for this.


-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595




More information about the R-help mailing list