Repeat headers when using xtable with longtable option
In order to accomplish this, you'll need to use the add.to.row
option of the print
function (run ?print.xtable
for more information).
Try this (adapted from a post on R-Forge)
addtorow <- list()
addtorow$pos <- list()
addtorow$pos[[1]] <- c(0)
addtorow$command <- c(paste(
"\\hline \n",
"\\endhead \n",
"\\hline \n",
"{\\footnotesize Continued on next page} \n",
"\\endfoot \n",
"\\endlastfoot \n",
sep=""))
x.big <- xtable(
x,
label = "tabbig",
caption = "Example of longtable spanning several pages")
print(
x.big,
tabular.environment = "longtable",
floating = FALSE,
include.rownames = FALSE, # because addtorow will substitute the default row names
add.to.row = addtorow, # this is where you actually make the substitution
hline.after=c(-1)) # because addtorow will substitute the default hline for the first row
It's a bit clumsy of a solution, but at least it'll provide you with plenty of customization.
Looking at the code for print.xtable, the only considerations it makes when tabular.environment="longtable"
are
- Emitting a warning if you also set
floating=TRUE
- Putting the caption in the right place for a longtable (top or bottom)
It does not emit the code specific for repeating the headers on subsequent pages. Check out latex
in the Hmisc
package. I know it has support for longtables as well, but I don't recall if it repeats headers correctly.