[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