[R] apply vs. sapply

Uwe Ligges ligges at statistik.uni-dortmund.de
Sat Dec 21 18:28:02 CET 2002


Christian Schulz wrote:
> 
> Hi,
> 
> sapply((1:NCOL(hermes)),function(x) hist(hermes[,x],main=names(hermes)[x]))
> 
> .......this works , but i would like use it with apply to generate many plots in one step!

sapply() already *has* generated many plots, if NCOL(hermes) > 1.
It's rather complicated to help if one does not know what kind of object
"hermes" is [I guess a data.frame, because names() seems to give
reasonable results for you]


> ####################################################################
> 
> >>apply((1:ncol(hermes)),2,function(x) hist(hermes[,x],main=names(hermes)[x]))
> Error in apply(1:ncol(hermes), 2, function(x) hist(hermes[, x], main = names(hermes)[x])) :
>         dim(X) must have a positive length

apply() expects an array or a matrix, but not a vector.
The function within apply works on rows / columns of the matrix given as
the first argument, so something like
 apply(hermes, 2, hist) 
should do the trick.

Anyway, for labeling purposes I'd highly recommend to use a loop rather
than apply().

Uwe Ligges

 
> >>apply(hermes[,1:6],2,function(x) hist(hermes[,x],main=names(hermes)[x]))
> Error in hist.default(hermes[, x], main = names(hermes)[x]) :
>         `x' must be numeric
> 
> >>apply(hermes,2,function(x) hist(hermes[,x],main=names(hermes)[x]))
> Error in hist.default(hermes[,x ], main = names(hermes)[x]) :
>         `x' must be numeric
> 
> thanks for advance & regards
> 
>         [[alternate HTML version deleted]]
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> http://www.stat.math.ethz.ch/mailman/listinfo/r-help




More information about the R-help mailing list