无法从xtable R包中获得正确的tex输出

时间:2016-11-01 02:02:15

标签: r latex knitr xtable

我无法使用xtable R包获得正确的tex输出: 这是knitr文档块中的R代码

  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")

这是tex文件中的相应输出:

% 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}

包含区域和范围的命令多列...没有看到tex输出。 这是由于我使用xtableList吗?

1 个答案:

答案 0 :(得分:0)

我收到了来自xtable作者David Scott的问题的电子邮件:

  

我很高兴看到你正在使用xtableList。这并不让我感到惊讶   add.to.row有问题,因为xtableList使用add.to.row   提供中间标题(副标题)。

所以我能够按照他的建议解决这个问题: 使用as.is作为Sweave / knitr块并使用字符串替换在rowcom $命令中插入字符串。 因此,print.xtableList的一些参数在函数内部使用,不应使用。