我希望在xtable
输出中标注尺寸。但是,即使我手动将xtable
指定为table
,set.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手动构建它们,有没有办法让尺寸标记?
答案 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}