Возможно ли иметь выравнивание заголовка в xtable, отличное от выравнивания, используемого в остальной части таблицы? В моем случае я хочу, чтобы мой заголовок был выровнен по центру, но сама таблица должна быть выровнена по правому краю.
xtable и выравнивание заголовков
Ответы (2)
Чтобы сделать это в 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\} \\
Как это?
function(x){x}
можно заменить на identity
, что экономит несколько нажатий клавиш.
- person Benjamin Christoffersen; 23.09.2020
Просто чтобы продолжить ответ Spacedman (не могу добавить комментарий, так как у меня нет репутации;)
Вместо того, чтобы делать sanitize.colnames.function=function(x){x}
, вы можете сделать:
sanitize.colnames.function=function(x){paste0("\\multicolumn{1}{c}{",x,"}")}
Таким образом, вы можете пропустить шаг переименования. Если вы делаете/хотите сделать другие "украшения" заголовка, они должны быть сделаны до paste0
или между запятыми (если короткие)