[R] Install package automatically if not there?

Joris Meys jorismeys at gmail.com
Fri Jun 25 01:48:26 CEST 2010


If you want to make changes more permanent, you should take a look at
the "Rprofile.site" file. This one gets loaded in R at the startup of
the console. You can set the CRAN there if you want too.

Cheers
Joris

On Fri, Jun 25, 2010 at 1:32 AM, Joshua Wiley <jwiley.psych at gmail.com> wrote:
> 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.bierig at 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.psych at gmail.com> wrote:
>>> On Thu, Jun 24, 2010 at 1:51 PM, Joshua Wiley <jwiley.psych at 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.bierig at 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 at 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 at 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.
>



-- 
Joris Meys
Statistical consultant

Ghent University
Faculty of Bioscience Engineering
Department of Applied mathematics, biometrics and process control

tel : +32 9 264 59 87
Joris.Meys at Ugent.be
-------------------------------
Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php



More information about the R-help mailing list