如何在xtable.table输出中获取dimnames?

时间:2012-10-09 13:08:56

标签: r xtable

我希望在xtable输出中标注尺寸。但是,即使我手动将xtable指定为tableset.seed(10) d <- data.frame(x=sample(1:4),y=sample(1:4)) tb <- with(d, table(d,dnn=c("Xs","Ys"))) > tb Ys Xs 1 2 3 4 1 0 0 0 1 2 0 1 0 0 3 1 0 0 0 4 0 0 1 0 > xtable(tb) % latex table generated in R 2.15.1 by xtable 1.7-0 package % Tue Oct 9 09:06:10 2012 \begin{table}[ht] \begin{center} \begin{tabular}{rrrrr} \hline & 1 & 2 & 3 & 4 \\ \hline 1 & 0 & 0 & 0 & 1 \\ 2 & 0 & 1 & 0 & 0 \\ 3 & 1 & 0 & 0 & 0 \\ 4 & 0 & 0 & 1 & 0 \\ \hline \end{tabular} \end{center} \end{table} 的表格方法也不会输出维度标签:

xtable.table

检查{{1}}的代码并不会产生任何秘密。如果没有用multirow手动构建它们,有没有办法让尺寸标记?

2 个答案:

答案 0 :(得分:4)

这不会根据维度的名称创建多行或多列标题,但至少会显示它们。

print(xtable(format(ftable(tb))), 
      include.rownames=FALSE, include.colnames=FALSE,
      sanitize.text.function = function(x) {gsub('"',"",x)})

给出了

% latex table generated in R 2.15.1 by xtable 1.7-0 package
% Tue Oct 09 11:28:33 2012
\begin{table}[ht]
\begin{center}
\begin{tabular}{llllll}
  \hline
  \hline
     & Ys & 1 & 2 & 3 & 4 \\ 
  Xs &      &     &     &     &     \\ 
  1  &      &   0 &   0 &   0 &   1 \\ 
  2  &      &   0 &   1 &   0 &   0 \\ 
  3  &      &   1 &   0 &   0 &   0 \\ 
  4  &      &   0 &   0 &   1 &   0 \\ 
   \hline
\end{tabular}
\end{center}
\end{table}

您也可以恢复“正确”位置的水平线:

print(xtable(format(ftable(tb))), 
      include.rownames=FALSE, include.colnames=FALSE,
      sanitize.text.function = function(x) {gsub('"',"",x)},
      hline.after = c(-1, 2, nrow(tb)+2))

% latex table generated in R 2.15.1 by xtable 1.7-0 package
% Tue Oct 09 11:29:21 2012
\begin{table}[ht]
\begin{center}
\begin{tabular}{llllll}
  \hline
      & Ys & 1 & 2 & 3 & 4 \\ 
  Xs &      &     &     &     &     \\ 
   \hline
1  &      &   0 &   0 &   0 &   1 \\ 
  2  &      &   0 &   1 &   0 &   0 \\ 
  3  &      &   1 &   0 &   0 &   0 \\ 
  4  &      &   0 &   0 &   1 &   0 \\ 
   \hline
\end{tabular}
\end{center}
\end{table}

答案 1 :(得分:4)

使用tables包的一个解决方案:

library(tables) 

tblr <- tabular((Xs = as.factor(x)) ~ (Ys = as.factor(y)), data = d)
latex(tblr)

\begin{tabular}{lcccc}
\hline
 & \multicolumn{4}{c}{Ys} \\ 
Xs  & 1 & 2 & 3 & \multicolumn{1}{c}{4} \\ 
\hline
1  & $0$ & $0$ & $0$ & $1$ \\
2  & $0$ & $1$ & $0$ & $0$ \\
3  & $1$ & $0$ & $0$ & $0$ \\
4  & $0$ & $0$ & $1$ & $0$ \\
\hline 
\end{tabular}