From ripley at stats.ox.ac.uk  Thu May 19 12:07:20 2005
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Thu May 19 12:10:01 2005
Subject: [Rd] Getting ... without evaluating it?
In-Reply-To: <428C6147.9060105@stats.uwo.ca>
References: <428C6147.9060105@stats.uwo.ca>
Message-ID: <Pine.LNX.4.61.0505191104180.6887@gannet.stats>

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


[Rd] Getting ... without evaluating it?
Prof Brian Ripley