[R] understanding as.list(substitute(...()))

Tim Taylor t|m@t@y|or @end|ng |rom h|ddene|eph@nt@@co@uk
Tue Oct 6 08:38:27 CEST 2020


I probably need to be more specific.  What confuses me is not the use
of substitute, but the parenthesis after the dots.  It clearly works
and I can make guesses as to why but it is definitely not obvious.
The following function gives the same final result but I can
understand what is happening.

dots <- function (...) {
   exprs <- substitute(list(...))
   as.list(exprs[-1])
}

In the original,     dots <- function(...) as.list(substitute(...())),
   Does ...() get parsed in a special way?

Tim

On Tue, 6 Oct 2020 at 05:30, Bert Gunter <bgunter.4567 using gmail.com> wrote:
>
> You need to understand what substitute() does -- see ?substitute and/or a tutorial on "R computing on the language" or similar.
>
> Here is a simple example that may clarify:
>
> > dots <- function(...) as.list(substitute(...()))
> > dots(log(foo))
> [[1]]
> log(foo)  ## a call, a language object
>
> > dots2 <- function(...) as.list(...)
> > dots2(log(foo))
> Error in as.list(...) : object 'foo' not found
> ## substitute() does not evaluate its argument; as.list() does
>
> Cheers,
> Bert Gunter
>
> "The trouble with having an open mind is that people keep coming along and sticking things into it."
> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>
>
> On Mon, Oct 5, 2020 at 1:37 PM Tim Taylor <tim.taylor using hiddenelephants.co.uk> wrote:
>>
>> Could someone explain what is happening with the ...() of the
>> following function:
>>
>> dots <- function(...) as.list(substitute(...()))
>>
>> I understand what I'm getting as a result but not why.   ?dots and
>> ?substitute leave me none the wiser.
>>
>> regards
>> Tim
>>
>> ______________________________________________
>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> 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