Search code examples
rxtable

How to get dimnames in xtable.table output?


I'd like to have the dimensions labeled in my xtable output. However, the table method of xtable does not output dimension labels even when I specify them manually to table:

set.seed(10)
d <- data.frame(x=sample(1:4),y=sample(1:4))
tb <- with(d, table(d,dnn=c("Xs","Ys")))
> tb
   Ys
Xs  1 2 3 4
  1 0 0 0 1
  2 0 1 0 0
  3 1 0 0 0
  4 0 0 1 0
> xtable(tb)
% latex table generated in R 2.15.1 by xtable 1.7-0 package
% Tue Oct  9 09:06:10 2012
\begin{table}[ht]
\begin{center}
\begin{tabular}{rrrrr}
  \hline
 & 1 & 2 & 3 & 4 \\ 
  \hline
1 &   0 &   0 &   0 &   1 \\ 
  2 &   0 &   1 &   0 &   0 \\ 
  3 &   1 &   0 &   0 &   0 \\ 
  4 &   0 &   0 &   1 &   0 \\ 
   \hline
\end{tabular}
\end{center}
\end{table}

Inspection of the code for xtable.table doesn't yield any secrets. Short of building them manually with multirow is there any way of getting the dimensions labeled?


Solution

  • One solution with the tables package:

    library(tables) 
    
    tblr <- tabular((Xs = as.factor(x)) ~ (Ys = as.factor(y)), data = d)
    latex(tblr)
    
    \begin{tabular}{lcccc}
    \hline
     & \multicolumn{4}{c}{Ys} \\ 
    Xs  & 1 & 2 & 3 & \multicolumn{1}{c}{4} \\ 
    \hline
    1  & $0$ & $0$ & $0$ & $1$ \\
    2  & $0$ & $1$ & $0$ & $0$ \\
    3  & $1$ & $0$ & $0$ & $0$ \\
    4  & $0$ & $0$ & $1$ & $0$ \\
    \hline 
    \end{tabular}