On Thu, 19 May 2005, Duncan Murdoch wrote:
> I'd like a function to get an unevaluated copy of its argument list,
> including ... . That is, I'd like
>
> f <- function(...) {
> args <- <what goes here??>
> args
> }
>
> when called as
>
> f(a = 1+1, b = foo)
>
> to return something like list(a = quote(1+1), b = quote(foo)). If I use
args
> <- list(...) then it tries to evaluate the arguments and dies (because
foo
> doesn't exist). If I use args <- substitute(...) then it gives just
1+1, it
> doesn't keep the names or give the whole list.
> f <- function(...) as.list(match.call())[-1]
> f(a = 1+1, b = foo)
$a
1 + 1
$b
foo
(which is what list(a = quote(1+1), b = quote(foo)) prints as).
--
Brian D. Ripley, ripley@stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595