Quantcast
Channel: Noodling in the data stream
Viewing all articles
Browse latest Browse all 48

Tidying up your R packages

$
0
0

Do you have the same R packages installed in two places? Would you like to remove the duplicates? You might find the script below useful:


rm(list=ls(all=TRUE))

# define function to return duplicate packages and paths
tidyup <- function() {
   packs <- as.data.frame(installed.packages())
   paths <- levels(packs$LibPath)
   main <- subset(packs, LibPath==paths[2]) # base and recommended
   mine <- subset(packs, LibPath==paths[3]) # stuff I installed
   dups <- intersect(main$Package,mine$Package)
   return(list(paths,dups))
}   

# do the work:
cleanthis <- tidyup()
removethese <- cleanthis[[2]]          # here's the list of dups
fromhere <- cleanthis[[1]][3]          # I only want them on the main path
remove.packages(removethese, fromhere) # done

# check the result: 
# if length(tidyup()[[2]])=0, all is well. no dup packages left.
checkthis <- as.numeric(length(tidyup()[[2]]))

Why I wrote this:

A while back I chose to separate my package library over two file paths. One would be for base and recommended packages (1), the other for everything else (2). My notes on how I did that are here, and my reasons are here.

Today, I wanted to update my Zelig. I used the wizard -- source("http://r.iq.harvard.edu/zelig.installer.R") -- so I would get all the add-ons in one step. The wizard works under the assumptions that your library is all in one place. It installed a few packages that Zelig and its add-ons depend on on path (2), because it didn't find them there. They were present on path (1) though, so I ended up with duplicates. This is how I got rid of them.


Viewing all articles
Browse latest Browse all 48

Trending Articles