[R] table function in a matrix

Petr Savicky savicky at cs.cas.cz
Thu Jun 7 12:12:00 CEST 2012


On Wed, Jun 06, 2012 at 11:02:46PM -0700, Sarah Auburn wrote:
> Hi,
> I am trying to get a summary of the counts of different variables for each sample in a matrix of the form "m" below to generate an output as shown. (Ultimately I want to generate a stacked barchart for each sample). I am only able to get the "table" function to work on one sample (column) at a time. Any help appreciated.
> Thank you
> Sarah
> ?
> a<-c("A", "A", "B", "B", "C", "A", "C", "D", "A", "D", "C", "A", "D", "C", "A", "C")
> m<-matrix(a, nrow=4)
> m
> ???? [,1] [,2] [,3] [,4]
> [1,] "A"? "C"? "A"? "D" 
> [2,] "A"? "A"? "D"? "C" 
> [3,] "B"? "C"? "C"? "A" 
> [4,] "B"? "D"? "A"? "C" 
> 
> output needed (so that I can use the "barplot(t(output))" function):
>      A B C D
> [,1] 2 2 0 0
> [,2] 1 0 2 1
> [,3] 2 0 1 1
> [,4] 1 0 2 1

Hi.

Try the following.

  a<-c("A", "A", "B", "B", "C", "A", "C", "D", "A", "D", "C", "A", "D", "C", "A", "C")
  m<-matrix(a, nrow=4)
  tab <- function(x) { table(factor(x, levels=LETTERS[1:4])) }
  t(apply(m, 2, tab))

       A B C D
  [1,] 2 2 0 0
  [2,] 1 0 2 1
  [3,] 2 0 1 1
  [4,] 1 0 2 1

Factors are used to ensure that all the tables have the same length,
even if some letters are missing.

Hope this helps.

Petr Savicky.



More information about the R-help mailing list