[R] Automating plot labelling in custom function in lapply( ) ?
Liaw, Andy
andy_liaw at merck.com
Fri Apr 29 15:34:12 CEST 2005
> From: Marc Schwartz
>
> 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
For things like these I'd suggest using lattice; e.g.,
densityPlot <- function(dat, xlab=deparse(substitute(dat)), ...) {
stopifnot(require(lattice))
vars <- rep(colnames(dat), each=nrow(dat))
densityplot(~ c(as.matrix(dat)) | vars, xlab=xlab, ...)
}
densityPlot(dat, layout=c(2, 2))
Cheers,
Andy
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>
>
>
More information about the R-help
mailing list