0

I have been unable to get a correct tex output with xtable R package: This is the R code in the chunk of a knitr document

  attr(p_val_table_list, "subheadings") <- paste0("Hemisphere : ",c("Left","Right"))
   xtablelist <- xtableList(p_val_table_list)
   col.names <- c("KS test","MWU test", "Welch's t-test")
  rowcom <- list(pos = c(4), 
     command = paste0(c("Region",paste0(" & \\multicolumn{3}{c}{", col.names , '}', collapse='')), '\\\\'))
  #print(addtorow)
  print(xtablelist, add.to.row = rowcom, only.contents=FALSE,
    include.rownames=TRUE, sanitize.colnames.function = simp.colnames,
    type="latex",floating.environment = "sidewaystable")

This is the corresponding output in tex files:

% latex table generated in R 3.2.3 by xtable 1.8-2 package
% Mon Oct 31 21:55:14 2016
\begin{sidewaystable}[ht]
\centering
\begin{tabular}{rlllllllll}
  \hline
 & two.sided & less & greater & two.sided & less & greater & two.sided & less & greater \\ 
  \hline
\multicolumn{9}{l}{Hemisphere : Left}\\
normal vs aMCI & $<$0.0001 & 0.2541 & $<$0.0001 & $<$0.0001 & $<$0.0001 & 1 & $<$0.0001 & $<$0.0001 & 1 \\ 
  normal vs amdMCI & $<$0.0001 & 0.8165 & $<$0.0001 & $<$0.0001 & $<$0.0001 & 1 & $<$0.0001 & $<$0.0001 & 1 \\ 
  normal vs nMCI & $<$0.0001 & 0.8951 & $<$0.0001 & $<$0.0001 & $<$0.0001 & 1 & $<$0.0001 & $<$0.0001 & 1 \\ 
  normal vs nmdMCI & $<$0.0001 & $<$0.0001 & 0.1294 & $<$0.0001 & 1 & $<$0.0001 & $<$0.0001 & 1 & $<$0.0001 \\ 
  aMCI vs amdMCI & $<$0.0001 & 0.8959 & $<$0.0001 & $<$0.0001 & $<$0.0001 & 1 & $<$0.0001 & $<$0.0001 & 1 \\ 
  aMCI vs nMCI & $<$0.0001 & 0.252 & $<$0.0001 & $<$0.0001 & $<$0.0001 & 1 & $<$0.0001 & $<$0.0001 & 1 \\ 
  nMCI vs nmdMCI & $<$0.0001 & $<$0.0001 & 0.7627 & $<$0.0001 & 1 & $<$0.0001 & $<$0.0001 & 1 & $<$0.0001 \\ 
   \hline
\multicolumn{9}{l}{Hemisphere : Right}\\
normal vs aMCI1 & $<$0.0001 & 0.2541 & $<$0.0001 & $<$0.0001 & $<$0.0001 & 1 & $<$0.0001 & $<$0.0001 & 1 \\ 
  normal vs amdMCI1 & $<$0.0001 & 0.8165 & $<$0.0001 & $<$0.0001 & $<$0.0001 & 1 & $<$0.0001 & $<$0.0001 & 1 \\ 
  normal vs nMCI1 & $<$0.0001 & 0.8951 & $<$0.0001 & $<$0.0001 & $<$0.0001 & 1 & $<$0.0001 & $<$0.0001 & 1 \\ 
  normal vs nmdMCI1 & $<$0.0001 & $<$0.0001 & 0.1294 & $<$0.0001 & 1 & $<$0.0001 & $<$0.0001 & 1 & $<$0.0001 \\ 
  aMCI vs amdMCI1 & $<$0.0001 & 0.8959 & $<$0.0001 & $<$0.0001 & $<$0.0001 & 1 & $<$0.0001 & $<$0.0001 & 1 \\ 
  aMCI vs nMCI1 & $<$0.0001 & 0.252 & $<$0.0001 & $<$0.0001 & $<$0.0001 & 1 & $<$0.0001 & $<$0.0001 & 1 \\ 
  nMCI vs nmdMCI1 & $<$0.0001 & $<$0.0001 & 0.7627 & $<$0.0001 & 1 & $<$0.0001 & $<$0.0001 & 1 & $<$0.0001 \\ 
   \hline
\multicolumn{9}{l}{}\\
\end{tabular}
\end{sidewaystable}

The command that includes region & multicolumn ... is not seen the tex output. Is this due to me using xtableList?

1 Answers1

0

I received an email to my question from xtable author David Scott:

I am glad to see you are using xtableList. It doesn't surprise me that add.to.row has problems though since xtableList uses add.to.row to provide intermediate headings (subheadings).

So I was able to work around this by following his suggestion: use as.is for the Sweave/knitr chunk and use string replacement to insert the string at rowcom$command. So some arguments of print.xtableList are used internally in the function and should not be used.