[R] getting the name of variables passed to a function

Marc Schwartz marc_schwartz at comcast.net
Mon Jul 30 14:39:42 CEST 2007


On Fri, 2007-07-27 at 09:52 -0700, Horace Tso wrote:
> Folks,
> 
> I've entered into an R programming territory I'm not very familiar
> with, thus this probably very elementary question concerning the
> mechanic of a function call.
> 
> I want to know from within a function the name of the variables I pass
> down. The function makes use of the "..." to allow for multiple
> unknown arguments,
> 
> myfun = function(...) { do something }
> 
> In the body I put,
> 
> {    
> nm <- names(list(...))
> nm
> }
> 
> When the function is called with two vectors x, and y
> 
> myfun(x, y)
> 
> It returns NULL. However, when the call made is,
> 
> >myfun(x=x, y=y)
> 
> The result is
> [1] "x" "y"
> 
> Question : how do i get the names of the unknown variables without
> explicitly saying x=x...
> 
> Thanks in advance.
> 
> Horace


See ?match.call and take note of the 'expand.dots' argument, which
defaults to TRUE.

  DotsFun <- function(...) as.character(match.call())[-1]
  
  x <- 1:10
  y <- 5:6

  > DotsFun(x, y)
  [1] "x" "y"

match.call() returns the full function call. In the above, we take that
result, coerce it to a character vector and remove the first element,
which is the function being called, thus leaving the arguments.

HTH,

Marc Schwartz



More information about the R-help mailing list