Skip to content
Prev 30797 / 398513 Next

accessing current factor in tapply

I've just been puzzling through this for my own use.
There are three different R functions which do related
things:  tapply(), by() and aggregate().  In this context,
I think I would use  by()  rather than  tapply().  Define
cc, ff as before, and re-define

pp <- function(dat, name)
	hist(dat$x, main=as.character(unique(dat[[name]])))
then

by(data.frame(cc,ff), ff, pp, "ff")	#  should do what you want

The slightly odd syntax at the end of pp() allows its second
argument "name" to be either a string naming the selection
variable (as here) or else an integer specifying it by position
within the data frame.  If you want to split the data set on
the cross product of two factors, ff x gg, the second argument
to by() would have to be  list(ff,gg).  tapply(), by contrast,
requires the list() syntax even when there's only one factor
to split on.

HTH  -  tom blackwell  -  u michigan medical school  -  ann arbor  -
On Thu, 17 Apr 2003, Bernie McConnell wrote: