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 <[EMAIL PROTECTED]> 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@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. > ______________________________________________ R-help@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.