[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