2012-10-09 16 views
8

Tôi muốn có kích thước được gắn nhãn trong đầu ra xtable của mình. Tuy nhiên, phương pháp bảng xtable không chiều đầu ra nhãn ngay cả khi tôi xác định chúng bằng tay để table:Làm thế nào để có được dimnames trong đầu ra 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} 

Kiểm tra mã cho xtable.table không mang lại bất kỳ bí mật. Ngắn xây dựng chúng bằng tay với multirow là có bất kỳ cách nào để nhận được các kích thước được dán nhãn?

Trả lời

4

Một giải pháp với tables gói:

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

Điều này không tạo tiêu đề nhiều hoặc nhiều cột dựa trên tên của thứ nguyên, nhưng ít nhất nó cũng hiển thị chúng.

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

mang đến cho

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

Bạn có thể khôi phục các đường ngang trong "đúng" chỗ cũng như:

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

cho

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

Tuyệt vời. Thật đáng tiếc R khiến cho việc in một bảng đơn giản trở nên khó khăn. – skan

Các vấn đề liên quan