Message-ID: <428C6F6C.7030807@stats.uwo.ca>
Date: 2005-05-19T12:49:40Z
From: Duncan Murdoch
Subject: Getting ... without evaluating it?
In-Reply-To: <Pine.LNX.4.61.0505191104180.6887@gannet.stats>
Prof Brian Ripley wrote:
> 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).
Thanks!
Duncan Murdoch