[R] Install package automatically if not there?
Joshua Wiley
jwiley.psych at gmail.com
Fri Jun 25 01:32:12 CEST 2010
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
More information about the R-help
mailing list