On 5/26/2011 11:54 PM, Marius Hofert wrote:
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?

I think what you are looking for is format. That gives a character matrix which is the formatted rows and columns that you see printed (it is, in fact, the function that print.ftable uses). That character matrix can be passed to xtable easily.

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@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,                  rip...@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



--
Brian S. Diggs, PhD
Senior Research Associate, Department of Surgery
Oregon Health & Science University

______________________________________________
R-help@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.

Reply via email to