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

Marius Hofert m_hofert at web.de
Fri May 27 08:54:00 CEST 2011


Dear Prof. Ripley,

many thanks for your quick reply. 

A character matrix (although clearly not very elegant) would be no problem, xtable deals 
with that. 
I tried as.data.frame() before, but if one wants to have the same rows
as in ft, one has to use additional commands (?):
ft # => 16 rows
as.data.frame(ft) # => 32 rows; different order
Is there a simple way to get the same order of the variables as in ft?

Cheers,

Marius

On 2011-05-27, at 08:17 , Prof Brian Ripley wrote:

> 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