5

是否可以在 xtable 中使用与表格其余部分中使用的对齐方式不同的标题对齐方式?就我而言,我希望我的标题居中对齐,但表格本身应该右对齐。

4

2 回答 2

9

要在 LaTeX 中做到这一点,您将标题粘贴到一个\multicolumn东西中以指定您想要的对齐方式:

\begin{tabular}{rrr}
  \hline
 & \multicolumn{1}{c}{x} &\multicolumn{1}{c}{y} \\ 
  \hline
1 &   1 & 0.17 \\ 
  2 &   2 & 0.63 \\ 
  3 &   3 & 0.95 \\ 
  4 &   4 & 0.57 \\ 
  5 &   5 & 0.65 \\ 
   \hline
\end{tabular}

print.xtable函数使用xtable对象的名称作为标题。因此,如果您重命名xtable对象:

> d=data.frame(x=1:5,y=runif(5))  # sample data frame
> dx=xtable(d) # make an xtable
> names(dx)=c("\\multicolumn{1}{c}{x}","\\multicolumn{1}{c}{y}")

那么大部分工作就完成了,您只需打印它覆盖以下的清理功能print.xtable

> print.xtable(dx,sanitize.colnames.function=function(x){x})
% latex table generated in R 2.15.1 by xtable 1.7-0 package
% Thu Feb 21 15:28:11 2013
\begin{table}[ht]
\begin{center}
\begin{tabular}{rrr}
  \hline
 & \multicolumn{1}{c}{x} & \multicolumn{1}{c}{y} \\ 
  \hline
1 &   1 & 0.78 \\ 
  2 &   2 & 0.34 \\ 
  3 &   3 & 0.88 \\ 
  4 &   4 & 0.45 \\ 
  5 &   5 & 0.54 \\ 
   \hline
\end{tabular}
\end{center}
\end{table}

否则它会

& $\backslash$multicolumn\{1\}\{c\}\{x\} & $\backslash$multicolumn\{1\}\{c\}\{y\} \\ 

怎么样?

于 2013-02-21T15:30:10.550 回答
5

只是为了跟进 Spacedman 的回答(因为我没有名气,所以无法添加评论;)

而不是这样做,sanitize.colnames.function=function(x){x}你可以这样做:

sanitize.colnames.function=function(x){paste0("\\multicolumn{1}{c}{",x,"}")}

这样您就可以跳过重命名步骤。如果您做/想要做其他标题“美化”,它们应该paste0在逗号之前或之间完成(如果很短)

于 2016-05-31T19:20:04.973 回答