On 12/08/2018 4:00 PM, Henrik Bengtsson wrote:
Hi. For any number of *known* arguments, we can do:
one <- function(a) list(a = substitute(a))
two <- function(a, b) list(a = substitute(a), b = substitute(b))
and so on. But how do I achieve the same when I have:
dots <- function(...) list(???)
I want to implement this such that I can do:
exprs <- dots(1+2)
str(exprs)
List of 1
$ : language 1 + 2
as well as:
exprs <- dots(1+2, "a", rnorm(3))
str(exprs)
List of 3
$ : language 1 + 2
$ : chr "a"
$ : language rnorm(3)
Is this possible to achieve using plain R code?
I think so. substitute(list(...)) gives you a single expression
containing a call to list() with the unevaluated arguments; you can
convert that to what you want using something like
dots <- function (...) {
exprs <- substitute(list(...))
as.list(exprs[-1])
}
Duncan Murdoch
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel