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

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri May 27 08:17:54 CEST 2011


as.data.frame(ft)

seems straightforward enough.

I don't think you actually want a matrix, as they would have to be a 
character matrix and the ftable object is numeric.

On Fri, 27 May 2011, Marius Hofert wrote:

> 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)
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

-- 
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