[R] output from table() in matrix form

Prof Brian Ripley ripley at stats.ox.ac.uk
Wed Jan 5 13:59:03 CET 2005


table works the way it does because it applies to *factors*, so the names 
are the factor levels of the argument after conversion.  So if anything is 
wasteful, that is.

How about using the guts of factor and table, via

xx <- unique(x)
rbind(vals=xx, cnts=tabulate(match(x, xx)))

?

On Wed, 5 Jan 2005, Robin Hankin wrote:

> Hi
>
> How do I get the output from table() in matrix form?
>
> If I have
>
> R>  table(c(1,1,1,1,2,20))
>
> 1  2 20
> 4  1  1
>
> I want
>
>     [,1] [,2] [,3]
> [1,]    1    2   20
> [2,]    4    1    1
>
>
> The problem is that names(table) is a vector of characters and I need the 
> numeric values.
>
> I am using
>
> R>  rbind(as.integer(names(x)),x)
>
>
>
>
> I thought tabulate() might be better as it takes an integer-valued vector, 
> but it isn't
> quite right because the default bins are 1:20 and  I don't want the zeroes.
>
> The following is a little clunky:
>
> R> x <- rbind(1:20,tabulate(c(1,1,1,1,2,20)))
> R> x[,x[2,]>0]
>     [,1] [,2] [,3]
> [1,]    1    2   20
> [2,]    4    1    1
>
>
> Is there a better way?   It seems inelegant to coerce a character vector back 
> to integers,
> but OTOH  it's wasteful to have 20 bins when I only need 3.  My real 
> application would have
> maybe a dozen distinct (prime) integers in the range 2 up to about  1e4.
>
>
>
>
>
> --
> Robin Hankin
> Uncertainty Analyst
> Southampton Oceanography Centre
> European Way, Southampton SO14 3ZH, UK
> tel  023-8059-7743
>
> ______________________________________________
> 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
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595




More information about the R-help mailing list