[R] matching last argument in function

Thomas Lumley tlumley at u.washington.edu
Tue Feb 12 21:31:24 CET 2008


On Tue, 12 Feb 2008, Alistair Gee wrote:

> I often want to temporarily modify the options() options, e.g.
>
> a <- seq(10000001, 10000001 + 10) # some wide object
>
> with.options <- function(..., expr) {
>  options0 <- options(...)
>  tryCatch(expr, finally=options(options0))
> }
>
> Then I can use:
>
> with.options(width=160, expr = print(a))
>
> But I'd like to avoid explicitly naming the expr argument, as in:
>
> with.options(width=160, print(a))
>
> How can I do this with R's argument matching?

You can't.  You could provide a list, though:

with.options <- function(optionlist,expr){
   option0<-options(optionlist)
   on.exit(options(options0))
   eval.parent(expr)
}

then 
with.options(width=160, print(a))
with.options(list(width=160, warn=1), print(a))


        -thomas

Thomas Lumley			Assoc. Professor, Biostatistics
tlumley at u.washington.edu	University of Washington, Seattle



More information about the R-help mailing list