[R] Automating plot labelling in custom function in lapply() ?

Marc Schwartz MSchwartz at MedAnalytics.com
Fri Apr 29 15:16:30 CEST 2005


On Fri, 2005-04-29 at 13:00 +0100, Gavin Simpson wrote:
> Dear List,
> 
> Consider the following example:
> 
> dat <- data.frame(var1 = rnorm(100), var2 = rnorm(100),
>                    var3 = rnorm(100), var4 = rnorm(100))
> oldpar <- par(mfrow = c(2,2), no.readonly = TRUE)
> invisible(lapply(dat,
>                   function(x) {
>                     plot(density(x),
>                          main = deparse(substitute(x))) }
>                   )
>            )
> par(oldpar)
> 
> I want to the main title in each of the density plots to be var1, var2, 
> etc. The above code produces x[[1]], x[[2]] etc.
> 
> What do I need to modify to be able to use the name of x as the plot 
> label within in the above situation?
> 
> Thanks in advance,
> 
> Gav

Gavin,

To paraphrase John Fox from a recent thread, "this is one of those times
where trying to avoid using a for() loop is counterproductive":

oldpar <- par(mfrow = c(2,2), no.readonly = TRUE)

for (i in 1:4)
{
  plot(density(dat[, i]), main = colnames(dat)[i])
}

par(oldpar)


HTH,

Marc Schwartz




More information about the R-help mailing list