[R] matching last argument in function

Gabor Grothendieck ggrothendieck at gmail.com
Tue Feb 12 21:43:45 CET 2008


Try this:

with.options <- function(...) {
    L <- as.list(match.call())[-1]
    len <- length(L)
    old.options <- do.call(options, L[-len])
    on.exit(options(old.options))
    invisible(eval.parent(L[[len]]))
}

> with.options(width = 40, print(1:25))
 [1]  1  2  3  4  5  6  7  8  9 10 11 12
[13] 13 14 15 16 17 18 19 20 21 22 23 24
[25] 25
> with.options(width = 80, print(1:25))
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25




On Feb 12, 2008 12:45 PM, Alistair Gee <alistair.gee at gmail.com> 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? (I prefer the expr as
> the last argument since it could be a long code block. Also, I'd like
> with.options to take multiple options.)
>
> TIA
>
> ______________________________________________
> 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.
>



More information about the R-help mailing list