Re: [R] Names of objects passed as ... to a function?

From: Prof Brian Ripley <ripley_at_stats.ox.ac.uk>
Date: Sat, 23 Jun 2007 16:52:50 +0100 (BST)

On Sat, 23 Jun 2007, Gavin Simpson wrote:

> Dear list,
>
> I have a function whose first argument is '...'. Each element of '...'
> is a data frame, and there will be at least 2 data frames in '...'. The
> function processes each of the data frames in '...' and returns a list,
> whose components are the processed data frames. I would like to name the
> components of this returned list with the names of the original data
> frames.
>
> Normally I'd use deparse(substitute()) to do this, but here I do not
> know the appropriate argument to run deparse(substitute()) on, and doing
> this on ... only returns a single "name":
>
>> foo <- function(...)
> + deparse(substitute(...))
>> dat1 <- rnorm(10)
>> dat2 <- runif(10)
>> foo(dat1, dat2)
> [1] "dat1"
>
> Can anyone suggest to me a way to get the names of objects passed as
> the ... argument of a function?

That's a little tricky. The following may suffice:

foo <- function(...)
{

   as.character(match.call())[-1]
}

The problem is that under certain circumstances match.call can give names like '..2'

> bar <- function(...) foo(...)
> bar(dat1, dat2)

[1] "..1" "..2"

and I don't know a comprehensive R-level solution to that.

-- 
Brian D. Ripley,                  ripley_at_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

______________________________________________
R-help_at_stat.math.ethz.ch 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.
Received on Sat 23 Jun 2007 - 15:55:08 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Sun 24 Jun 2007 - 10:32:23 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.