[R] Automatic detachment of dependent packages

Paul Smith phhs80 at gmail.com
Fri Sep 7 20:05:50 CEST 2007


On 9/7/07, Barry Rowlingson <b.rowlingson at lancaster.ac.uk> wrote:
> > When one loads certain packages, some other dependent packages are
> > loaded as well. Is there some way of detaching them automatically when
> > one detaches the first package loaded? For instance,
> >
> >> library(sqldf)
> > Loading required package: RSQLite
> > Loading required package: DBI
> > Loading required package: gsubfn
> > Loading required package: proto
> >
> > but
> >
> >> detach(package:sqldf)
> >>
> >> search()
> >  [1] ".GlobalEnv"        "package:gsubfn"    "package:proto"
> >  [4] "package:RSQLite"   "package:DBI"       "package:stats"
> >  [7] "package:graphics"  "package:grDevices" "package:utils"
> > [10] "package:datasets"  "package:methods"   "Autoloads"
> > [13] "package:base"
> >
> > The packages
> >
> > RSQLite
> > DBI
> > gsubfn
> > proto
> >
> > were not detached.
>
>   The danger here is that after attaching sqldf you might attach some
> other package that needs, say, DBI, then when your cleanup routine
> detaches DBI that other package dies because DBI isn't there.
>
>   The way to do it would be to detach any packages that are only
> depended on by the package you are detaching. You'd have to call
> packageDescription("foo", fields="Depends") for currently attached
> packages to build the dependency tree and then work out which ones you
> can remove... There's a bit of recursive tree-walking in there, but it
> should be simple... Ummm...

Thanks, Barry and Gabor. Please, look at the following:

> library(sqldf)
Loading required package: RSQLite
Loading required package: DBI
Loading required package: gsubfn
Loading required package: proto
> packageDescription("sqldf", fields="Depends")
[1] "R (>= 2.5.1), RSQLite (>= 0.5-5), gsubfn"
>

packageDescription does not mention the packages DBI and proto.

Paul



More information about the R-help mailing list