[R] Getting the real names of variables within functions

Duncan Murdoch murdoch at stats.uwo.ca
Mon Sep 20 16:10:28 CEST 2004


On Mon, 20 Sep 2004 10:00:19 -0400, adelmaas at MUSC.EDU wrote :

>Greetings.
>
>These days I find myself writing a lot of functions to handle routine 
>things.  One of these  is a function to create a scatterplot of 
>variables and draw a lowessed line so I can get some idea if there's 
>any relationship between them.
>
>lowessed.plot <- function(x, y)
>{	plot(x, y)
>	lines(lowess(x, y))
>}
>
>However, there's a slight problem:  the plot axes come out labeled "x" 
>and "y", which isn't what I want.  I want the plot axes labeled with 
>the names of the variables I passed into lowessed.plot for x and y.  Is 
>there any way to do that?  Thanks in advance for any help anyone can 
>provide.

You could do this with

plot(x, y, xlab=deparse(substitute(x)), ylab=deparse(substitute(y)))

But it's better to add two arguments to the function with those as
default values, then pass them on to plot(); that way you can change
the labels if you want.  And add dots for other customization.


For example,

lowessed.plot <- function(x, y, xlab=deparse(substitute(x)),
ylab=deparse(substitute(y)), ...)
{	plot(x, y, xlab=xlab, ylab=ylab, ...)
	lines(lowess(x, y))
}

Duncan Murdoch




More information about the R-help mailing list