[R] Assigning labels to a list created with apply
John Kane
jrkrideau at yahoo.ca
Fri Feb 2 14:34:26 CET 2007
--- Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:
> On Fri, 2 Feb 2007, John Kane wrote:
>
> > I have a simple data base and I want to produce
> tables
> > for each variable. I wrote a simple function
> > fn1 <- function(x) {table(x)} where x is a matrix
> or
> > data.frame. and used apply to produce a list of
> > tables. Example below.
> >
> > How do I apply the colnames from the matrix or
> names
> > from the data.frame to label the tables in the
> results
> > in the list. I know that I can do this
> individually
> > but there should be a way to do something like an
> > apply but I am missing it
> >
> > cata <- c( 1,1,6,1,1,NA)
> > catb <- c( 1,2,3,4,5,6)
> > doga <- c(3,5,3,6,4, 0)
> > dogb <- c(2,4,6,8,10, 12)
> > rata <- c (NA, 9, 9, 8, 9, 8)
> > ratb <- c( 1,2,3,4,5,6)
> > bata <- c( 12, 42,NA, 45, 32, 54)
> > batb <- c( 13, 15, 17,19,21,23)
> > id <- c('a', 'b', 'b', 'c', 'a', 'b')
> > site <- c(1,1,4,4,1,4)
> > mat1 <- cbind(cata, catb, doga, dogb, rata, ratb,
> > bata, batb)
> >
> > fn1 <- function(x) {table(x)}
> > jj <-apply(mat1, 1, fn1) ; jj
> >
> > ## Slow way to label a list ###
> > label(jj[[1]]) <- "cata"
> > label(jj[[2]]) <- "catb"
>
> That does not work in vanilla R. There is no
> function label<- (or label).
> Have you a package attached you did not tell us
> about? (E.g. are you
> using the Hmisc system, not the R system?)
Yes I am. I usually load it automatically and forgot
that it is not part of the package. My appologies
>
> You have applied fn1 to the rows and not the
> columns, and
>
> jj <-apply(mat1, 2, fn1)
>
> would give you the column labels as they do make
> sense. The way to add
> names to a list is names().
Now that makes me feel stupid. I knew I was
overlooking something blindingly obvious.
Thanks very much.
More information about the R-help
mailing list