From brahm@alum.mit.edu  Thu Mar 28 22:52:05 2002
From: brahm@alum.mit.edu (David Brahm)
Date: Thu, 28 Mar 2002 17:52:05 -0500
Subject: [Rd] pos argument to library
Message-ID: <15523.40597.925815.816765@gargle.gargle.HOWL>

While R-1.5.0 is still unfrozen, I'd like to lobby again for a "pos" argument
in library().  It seems straightforward to implement -- just change this line:
  env <- attach(NULL, name=pkgname)
to:
  env <- attach(NULL, pos, name=pkgname)

The reason I want this, by the way, is to mimic the S-Plus synchronize()
command.  Essentially, my version of synchronize() simply detaches a package
and then re-attaches it in the same position (thus requiring the "pos"
argument).  A fancier version would handle dynamic shared libraries correctly.
Here it is (it's called g.sync), if anyone is interested.

--- begin code ---
g.sync <- function(pos=2) {
  if (is.character(pos)) pos <- match(pos, sub("package:","",search()))
  pkg <- sub("package:", "", search()[pos])
  path <- searchpaths()[pos]
  is.lib <- match(dirname(path), .lib.loc, 0) > 0
  g.library <- g.library;  g.data.attach <- g.data.attach
  detach(pos=pos)
  if (is.lib) g.library(pkg, char=T, pos=pos) else g.data.attach(path, pos)
}
--- end code ---

Note that g.library is my copy of library() with the "pos" argument added, and
that I've assumed the "g.data" package is in use.  g.sync makes local copies of
g.library and g.data.attach in case the package being sync'ed contains one of
those functions!

-- 
                              -- David Brahm (brahm@alum.mit.edu)
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._


[Rd] pos argument to library
David Brahm