[R] help converting for loop to vector operation

baptiste auguie ba208 at exeter.ac.uk
Wed Apr 29 22:31:32 CEST 2009


Hi,

Here's one approach that I find perhaps more elegant than sweeping  
through the columns by their index,


> library(ggplot2)
> data(economics)
>
> str(economics)
>
>  # library(reshape)
> d <- melt(economics, id="date")
>
>
> foo <- function(var="pop", d, smooth=FALSE, ... ) {
>        p <- qplot( data=subset(d, variable==var), x=date, y=value,  
> geom=c('line','jitter'),
> 				ylab=var, main=var, colour=I("dark blue") )
>
>        if ( smooth == TRUE ) {
>                print("smoother requested...")
>                return(print(p + stat_smooth() ) )
>        }
>
> return(print(p))
> }
>
> foo(d=d)
>
>
> pdf()
> # library(plyr)
> l_ply(levels(d$variable), foo, d=d, smooth=T)
>  # or lapply()
> dev.off()

HTH,

baptiste

On 29 Apr 2009, at 20:59, Avram Aelony wrote:

>
> Dear List,
>
> I have a wrapper function that draws a graph that I'd like to use in  
> a vector-like manner.  The for-loop version I currently use is below.
>
> library(ggplot2)
> data(economics)
> h <- 600
> w <- 800
>
> #----------------------------------------------------------
> draw_metric_by_date <- function( df, i, smooth=FALSE, BASEPATH ) {
>        mlabel  <- names(df)[i]
>        qmetric <- qplot( data=df, x=date, y=df[,i],  
> geom=c('line','jitter'), ylab=mlabel, main=mlabel, colour=I("dark  
> blue") )
>
>        if ( smooth == TRUE ) {
>                print("smoother requested...")
>                tmp     <- qmetric
>                qmetric <- tmp + stat_smooth()
>        }
>
>
>        pngfn <- paste( BASEPATH, mlabel, ".png", sep="")
>        print(pngfn)
>        png( file=pngfn, height=h, width=w )
>                print(qmetric)
>                dev.off()
> }
>
>
> basepath <- "C:/tmp"
> for ( i in c(2:6) ) {
>        print(names(economics)[i])
>        draw_metric_by_date( economics, i, smooth=TRUE, basepath )
> }
>
> Could someone show me how to do the same with a vector approach with  
> an "apply" function ?
>
> Many thanks,
> Avram
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

_____________________________

Baptiste Auguié

School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

Phone: +44 1392 264187

http://newton.ex.ac.uk/research/emag




More information about the R-help mailing list