Dear All, 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. Thanks in advance, Paul
If its good enough just to get rid of all attached packages since after startup you could just do repeated detaches like this making use of the fact that search() has 9 components on startup: replicate(length(search()) - 9, detach()) On 9/7/07, Paul Smith <phhs80 at gmail.com> wrote:> Dear All, > > 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. > > Thanks in advance, > > Paul > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >
Paul Smith wrote:> Dear All, > > 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... Barry