Hello Ralf, Glad it works for you. As far as avoiding any prompting if packages are out-of-date; I am not sure. It honestly seems like a risky idea to me to have old packages being overwritten without a user knowing. However, I added a few lines of code here to set the CRAN mirror, and revert it back to whatever it was when the function ends to make it as inobtrusive as possible.
load.fun <- function(x) { old.repos <- getOption("repos") on.exit(options(repos = old.repos)) #this resets the repos option when the function exits new.repos <- old.repos new.repos["CRAN"] <- "http://cran.stat.ucla.edu" #set your favorite CRAN Mirror here options(repos = new.repos) x <- as.character(substitute(x)) if(isTRUE(x %in% .packages(all.available=TRUE))) { eval(parse(text=paste("require(", x, ")", sep=""))) } else { update.packages() # recommended before installing so that dependencies are the latest version eval(parse(text=paste("install.packages('", x, "')", sep=""))) eval(parse(text=paste("require(", x, ")", sep=""))) } } Best regards, Josh On Thu, Jun 24, 2010 at 3:34 PM, Ralf B <ralf.bie...@gmail.com> wrote: > Thanks, works great. > > By the way, is there a say to even go further, and avoid prompting > (e.g. picking a particiular server by default and updating without > further prompt) ? I could understand if such a feature does not exist for > security reasons... > > Thanks again, > Ralf > > On Thu, Jun 24, 2010 at 5:12 PM, Joshua Wiley <jwiley.ps...@gmail.com> wrote: >> On Thu, Jun 24, 2010 at 1:51 PM, Joshua Wiley <jwiley.ps...@gmail.com> wrote: >>> Hello Ralf, >>> >>> This is a little function that you may find helpful. If the package >>> is already installed, it just loads it, otherwise it updates the >>> existing packages and then installs the required package. As in >>> require(), 'x' does not need to be quoted. >>> >>> load.fun <- function(x) { >>> x <- as.character(substitute(x)) >>> if(isTRUE(x %in% .packages(all.available=TRUE))) { >>> eval(parse(text=paste("require(", x, ")", sep=""))) >>> } else { >>> update.packages() # recommended before installing so that >>> dependencies are the latest version >>> eval(parse(text=paste("install.packages('", x, "')", sep=""))) >>> } >>> } >> >> I miscopied the last line; it should be.... >> >> ########### >> load.fun <- function(x) { >> x <- as.character(substitute(x)) >> if(isTRUE(x %in% .packages(all.available=TRUE))) { >> eval(parse(text=paste("require(", x, ")", sep=""))) >> } else { >> update.packages() # recommended before installing so that >> dependencies are the latest version >> eval(parse(text=paste("install.packages('", x, "')", sep=""))) >> eval(parse(text=paste("require(", x, ")", sep=""))) >> } >> } >> ########### >> >>> >>> HTH, >>> >>> Josh >>> >>> On Thu, Jun 24, 2010 at 12:25 PM, Ralf B <ralf.bie...@gmail.com> wrote: >>>> Hi fans, >>>> >>>> is it possible for a script to check if a library has been installed? >>>> I want to automatically install it if it is missing to avoid scripts >>>> to crash when running on a new machine... >>>> >>>> Ralf >>>> >>>> ______________________________________________ >>>> R-help@r-project.org 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. >>>> >>> >>> >>> >>> -- >>> Joshua Wiley >>> Ph.D. Student >>> Health Psychology >>> University of California, Los Angeles >>> >> >> >> >> -- >> Joshua Wiley >> Ph.D. Student >> Health Psychology >> University of California, Los Angeles >> > -- Joshua Wiley Ph.D. Student Health Psychology University of California, Los Angeles ______________________________________________ R-help@r-project.org 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.