[R] How to latex tables?
Marc Schwartz
marc_schwartz at comcast.net
Sat May 5 19:14:16 CEST 2007
On Sat, 2007-05-05 at 11:35 -0500, Marc Schwartz wrote:
> On Sat, 2007-05-05 at 09:43 -0400, steve wrote:
> > Suppose I have a table constructed from structable or simply just an
> > object of class table. How can I convert it to a latex object? I looked
> > in RSiteSearch, but only found info about matrices or data frames.
> >
> > Steve
> >
> >
> > For example, here is a table t2
> >
> > > str(t2)
> > table [1:2, 1:2, 1:2] 6 8 594 592 57 ...
> > - attr(*, "dimnames")=List of 3
> > ..$ Hospital : chr [1:2] "A" "B"
> > ..$ Survival : chr [1:2] "Died" "Survived"
> > ..$ Condition: chr [1:2] "Good" "Poor"
> >
> > Here's what happens with latex(t2):
> >
> > latex(t2)
> > Error in x[, j] : incorrect number of dimensions
> >
> > Next, here's what happens with a structtable.
> >
> > > tab=structable(Hospital ~ Condition + Survival, data=t2)
> > > tab
> > Hospital A B
> > Condition Survival
> > Good Died 6 8
> > Survived 594 592
> > Poor Died 57 8
> > Survived 1443 192
> >
> > If I use latex(tab) I get
> >
> > Error in dimnames(cx) <- list(rnam, nam) :
> > length of 'dimnames' [1] not equal to array extent
> > In addition: Warning messages: ...(deleted)...
>
>
> You are trying to apply the latex() function to a 3 dimensional table. I
> don't know that any of the generally available R functions to generate
> LaTeX markup (eg. latex() or xtable()) have methods that support 3D
> tables.
>
> You could either generate multiple 2D tables and convert each separately
> or write your own function to generate the LaTeX markup in a format that
> you find suitable for your application.
>
> One other possible option, which would still require some tweaking
> depending upon your need, would be to use ftable() to format and convert
> the 3D table to a 2D table and latex() that. For example, using the
> UCBAdmissions dataset:
>
> > str(UCBAdmissions)
> table [1:2, 1:2, 1:6] 512 313 89 19 353 207 17 8 120 205 ...
> - attr(*, "dimnames")=List of 3
> ..$ Admit : chr [1:2] "Admitted" "Rejected"
> ..$ Gender: chr [1:2] "Male" "Female"
> ..$ Dept : chr [1:6] "A" "B" "C" "D" ...
>
>
> > ftable(UCBAdmissions)
> Dept A B C D E F
> Admit Gender
> Admitted Male 512 353 120 138 53 22
> Female 89 17 202 131 94 24
> Rejected Male 313 207 205 279 138 351
> Female 19 8 391 244 299 317
>
>
> > library(Hmisc)
>
> > latex(ftable(UCBAdmissions), file = "")
> % latex.default(ftable(UCBAdmissions), file = "")
> %
> \begin{table}[!tbp]
> \begin{center}
> \begin{tabular}{rrrrrr}\hline\hline
> \multicolumn{1}{c}{}&
> \multicolumn{1}{c}{}&
> \multicolumn{1}{c}{}&
> \multicolumn{1}{c}{}&
> \multicolumn{1}{c}{}&
> \multicolumn{1}{c}{}
> \\ \hline
> $512$&$353$&$120$&$138$&$ 53$&$ 22$\\
> $ 89$&$ 17$&$202$&$131$&$ 94$&$ 24$\\
> $313$&$207$&$205$&$279$&$138$&$351$\\
> $ 19$&$ 8$&$391$&$244$&$299$&$317$\\
> \hline
> \end{tabular}
>
> \end{center}
>
> \end{table}
Steve,
I located a couple of posts by David Whiting regarding converting an
ftable() object to LaTeX that you might find helpful:
http://tolstoy.newcastle.edu.au/R/help/05/08/11245.html
http://tolstoy.newcastle.edu.au/R/help/05/08/11251.html
HTH,
Marc
More information about the R-help
mailing list