You need some pre-processing, extra argument passed to print.xtable
and some post-processing:
my.table <- data.frame(Specifiers=c("","Spec1", "Spec2", "Spec3"),
Values1 = c("N=10", 1.03, 1.71, 2.25),
Values2 = c("N=20", 1.32, 1.79, 2.43))
colnames(my.table)[1] <- ""
# Pre-processing: rotates column names by 45 degrees
head = apply(as.array(names(my.table)), 1, function(x) paste("\rotatebox{45}{", x, "}"))
head = paste(head, c(rep("&", length(head)-1), "\\
"), collapse="")
latex.tab <- xtable(my.table, caption=c("Stats"))
ltable = print(latex.tab, file="", # File is empty, post-processing needed
floating.environment='sidewaystable',
include.rownames=FALSE,
include.colnames=FALSE, # No colnames
booktabs=TRUE,
latex.environment="center", # Or NULL
# Adds some extra-text after the rows specified in pos.
# Adds new midrule and comments old one.
# Adds pre-processed names of columns
add.to.row=list(pos=as.list(c(0, 0, 1)), command=as.vector(c(head, "%", "\midrule
"))))
# Post-processing: replaces egin{center} with centering
ltable = sub("\begin{center}
", "\centering
", ltable, fixed=TRUE)
ltable = sub("\end{center}
", "
", ltable, fixed=TRUE)
# Post-processing: adds alternating colours
ltable = sub("\begin{tabular}",
"\rowcolors{2}{gray!25}{white}
\begin{tabular}",
ltable, fixed=TRUE)
# Writes output to the file
cat(ltable, file="Summarystats.tex")
If you need other tabs environment than tabular
you can
1) add new variable:
TABULAR = "tabular"
2) Pass it's value to print.xtable
like this:
...
tabular.environment=TABULAR,
...
3) Change your post-processing for alternating colors:
ltable = sub(sprintf("\begin{%s}", TABULAR),
sprintf("\rowcolors{2}{gray!25}{white}
\begin{%s}", TABULAR),
ltable, fixed=TRUE)
Result: