[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