[R] getting package version inside .First.lib
Liaw, Andy
andy_liaw at merck.com
Thu Jan 27 12:43:05 CET 2005
> From: Prof Brian Ripley
>
> 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.
Thanks for the tip! Will remediate...
Andy
> --
> 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