[R] Name the dots! ("...")
Duncan Murdoch
murdoch.duncan at gmail.com
Sat Sep 17 14:16:36 CEST 2011
On 11-09-17 5:27 AM, andrewH wrote:
> Dear Folk--
>
> Suppose I have some objects A, B& C, and a function
> getDots<- function(...) {args<- list(...) etc.}
>
> If I do a call to getDots(A, B, C) then the variable args will be assigned
> to a list which contains the objects to which A, B& C refer, but which will
> not (except by happenstance) contain the names A, B, or C. I would like
> getDots to return a named list, with the object names being assigned as the
> element names in the list.
>
> Is there any way to do this?
Yes, there are two ways. First, you could name the arguments in the
call, e.g.
getDots(A=1, B=123, C=5)
and then args will become a named list. If you want it to happen
internally, it's harder: you need to examine the call that was made to
your function and construct the names from it.
You can do this in a fairly unsatisfactory way as follows:
values <- list(...)
names(values) <- lapply( as.list( substitute( list(...) ) )[-1], deparse)
One problem with this is that it will end up with the names "1", "123",
"5" if you call it as in the example above --- almost certainly not what
the user would want.
To do it compatibly with data.frame(), just copy the code out of that
function. The local variable "vnames" is constructed to hold the column
names, in about 30 lines of complicated code.
>
> As an aside, I do not understand why the list command does not do this by
> default, like the data.frame command does. In fact, you can use data.frame
> instead of list to get a named argument list, but only if all your objects
> are of the same length.
data.frames have to have names, lists don't. Putting those 30 lines of
code into list() would slow things down unnecessarily.
Duncan Murdoch
>
> Thanks in advance for any help you can offer.
> andrewH
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Name-the-dots-tp3819947p3819947.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> 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