[R] How to convert an ftable object to a matrix including the row names?

Marius Hofert m_hofert at web.de
Fri May 27 07:41:28 CEST 2011


Dear expeRts,

What's the easiest way to convert an ftable object to a matrix such that the 
row names of the ftable object are shown in the first couple of columns of the
matrix? This is (typically) required, for example, when the final goal is to print 
the matrix via xtable.

Below is a rather complicated example of how to do it... 

Cheers,

Marius

## Goal: convert an ftable() to a (character) matrix including the row names of 
##       the ftable object as columns in the matrix (so that the matrix can be
##       nicely printed with xtable() for example)
(ft <- ftable(Titanic, row.vars=1:3)) # ftable object
rn <- attr(ft, "row.vars") # pick out rownames
rn. <- rn[length(rn):1] # unfortunately, we have to (?) change the order due to expand.grid()
g <- expand.grid(rn.) # build the 3 columns containing the row names
(g. <- g[,length(rn):1]) # change order back; now contains the same row names as ft
(ft.mat <- as.matrix(ft)) # convert ftable object to a matrix
## now, cbind g. and ft.mat
cbind(g., ft.mat) # => now the rownames are there twice! ... although dim(ft.mat)==c(16, *2*)
## class(g.) => okay, probably we meant:
(res <- cbind(as.matrix(g.), ft.mat))
require(xtable)
xtable(res)


More information about the R-help mailing list