Uwe and Marc,
Many thanks to both of you for the answers.

BTW, I wanted it for handling this case (a single variable inside a data
variable) in the boxplot wrapper I recently wrote:
http://www.r-statistics.com/2011/01/how-to-label-all-the-outliers-in-a-boxplot/


With regards,
Tal


----------------Contact
Details:-------------------------------------------------------
Contact me: Tal.Galili@gmail.com |  972-52-7275845
Read me: www.talgalili.com (Hebrew) | www.biostatistics.co.il (Hebrew) |
www.r-statistics.com (English)
----------------------------------------------------------------------------------------------




On Sun, Jan 30, 2011 at 7:01 PM, Marc Schwartz <marc_schwartz@me.com> wrote:

> On Jan 30, 2011, at 10:38 AM, Tal Galili wrote:
>
> > Hello all,
> >
> > I would like to extract the variable name passed into a specific argument
> of
> > a function.
> > Using match.call() will give me a list of arguments and what was passed
> into
> > them, but I couldn't find how to get a particular argument out of it (at
> > least without using some string manipulation).
> >
> > Here is an example (in it, my objective is to know what is the variable
> name
> > assigned to the argument "b"):
> >
> > foo <- function(a, b, c)
> > {
> > print(match.call())
> > }
> > x = 1 ; y = 1
> > foo(x, y)  # here the answer should be "y"
> > foo(c= x, y)  # here the answer should be "" (or NULL/NA)
> >
> >
> > Any suggestion on how to do this?
> >
> >
> > BTW, the purpose of this is to be able to avoid the error produced by,
> for
> > example, this:
> >
> > yy <- data.frame(y = 1:10, x = 1:10)
> > plot(y, data = yy) # error
> > plot(y~x, data = yy) # no error...
>
>
> Tal,
>
> Try this:
>
> x <- 1
> y <- 1
>
> foo <- function(a, b, c) {as.list(match.call())}
>
>
> > foo(x, y)
> [[1]]
> foo
>
> $a
> x
>
> $b
> y
>
>
> > foo(x, y)$b
> y
>
>
> > foo(c = x, y)$b
> NULL
>
>
>
> If you really only want 'b' and not be able to get the other arguments, you
> can use:
>
> foo2 <- function(a, b, c) {as.list(match.call())$b}
>
> > foo2(x, y)
> y
>
> > foo2(c = x, y)
> NULL
>
>
> In your plot example above, you are first dispatching plot.default(), which
> of course has no 'data' argument. In the second case, you are dispatching
> plot.formula() which does have a 'data' argument, as do most, if not all, R
> functions that take a formula as an argument.
>
> HTH,
>
> Marc Schwartz
>
>

	[[alternative HTML version deleted]]

