You get the cation to the top of the table with print( saxtab, caption.placement = "top" )
Formatting the table the way you want can be done like this - I did not manage to carry the LaTeX math formatting for the row names over ($k$ and $n_k$)but the rest should be very much what you want: saxtab <- t( as.data.frame( addmargins( Saxony ) ) ) rownames( saxtab ) <- c( "Males (k)", "Families (n_k)" ) saxtab <- xtable( saxtab, digits = 0, caption = "Number of male children in 6115 Saxony families of size 12", align = "l|rrrrrrrrrrrrrr" ) print( saxtab, caption.placement = "top", include.colnames = FALSE, hline.after = c( NULL, 0, nrow( saxtab ) ) ) % latex table generated in R 3.0.2 by xtable 1.7-1 package % Wed Nov 27 17:41:17 2013 \begin{table}[ht] \centering \caption{Number of male children in 6115 Saxony families of size 12} \begin{tabular}{l|rrrrrrrrrrrrrr} \hline Males (k) & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & Sum \\ Families (n\_k) & 3 & 24 & 104 & 286 & 670 & 1033 & 1343 & 1112 & 829 & 478 & 181 & 45 & 7 & 6115 \\ \hline \end{tabular} \end{table} On Wednesday 27 November 2013 09:24:22 Michael Friendly wrote: > With xtable, I'm producing one-way tables from table objects in > horizontal form as shown below. > I'd like to change the labels used for the rows and move the caption to > the top of the table, > as is typically standard for tables. I can hand-edit, but would prefer > to do it in code. > > data(Saxony, package="vcd") > library(xtable) > saxtab <- xtable(t(addmargins(Saxony)), digits=0, > caption="Number of male children in 6115 Saxony families of size 12") > > print(saxtab) > > print(saxtab) > % latex table generated in R 3.0.1 by xtable 1.7-1 package > % Wed Nov 27 09:12:16 2013 > \begin{table}[ht] > \centering > \begin{tabular}{rrrrrrrrrrrrrrr} > \hline > & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & Sum \\ > \hline > 1 & 3 & 24 & 104 & 286 & 670 & 1033 & 1343 & 1112 & 829 & 478 & 181 & 45 > & 7 & 6115 \\ > \hline > \end{tabular} > \caption{Number of male children in 6115 Saxony families of size 12} > \end{table} > > > > The desired form looks like this, with row.names = c("Males ($k$)", > "Families ($n_k$)") > > % latex table generated in R 3.0.1 by xtable 1.7-1 package > % Tue Nov 26 14:56:02 2013 > \begin{table}[ht] > \caption{Number of male children in 6115 Saxony families of size 12} > \label{tab:saxtab} > \centering > \begin{tabular}{l|rrrrrrrrrrrrrr} > \hline > Males ($k$) & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & Sum \\ > \hline > Families ($n_k$) & 3 & 24 & 104 & 286 & 670 & 1033 & 1343 & 1112 & 829 & > 478 & 181 & 45 & 7 & 6115 \\ > \hline > \end{tabular} > \end{table} > > ______________________________________________ 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.