Reputation: 23898
I'm using xtable
to manage R
output in Sweave
. See code below:
CC <- data.frame(
y = c(449, 413, 326, 409, 358, 291, 341, 278, 312)/12,
P = ordered(gl(3, 3)), N = ordered(gl(3, 1, 9))
)
CC.aov <- aov(y ~ N * P, data = CC , weights = rep(12, 9))
Summary <- summary(CC.aov, split = list(N = list(L = 1, Q = 2),
P = list(L = 1, Q = 2)))
Summary
Df Sum Sq Mean Sq
N 2 1016.7 508.3
N: L 1 1012.5 1012.5
N: Q 1 4.2 4.2
P 2 917.4 458.7
P: L 1 917.3 917.3
P: Q 1 0.0 0.0
N:P 4 399.3 99.8
N:P: L.L 1 184.1 184.1
N:P: Q.L 1 152.1 152.1
N:P: L.Q 1 49.0 49.0
N:P: Q.Q 1 14.1 14.1
I like to indent the first column as shown in the output above. But when I use xtable(Summary)
the first column is aligned left. I know how to align left, right or center but could not figure out how to get the output as indented in the first.
Upvotes: 5
Views: 4173
Reputation: 4816
This example shows how to customize the table combining the use of the sanitize
argument in xtable and the function \hskip
in latex.
The code would be:
named = rownames(Summary[[1]])
tags= gsub(" "," ",named)
rownames(Summary[[1]])= c(ifelse(nchar(tags)<8,tags,paste("\\hskip .5cm",tags,sep=' ')))
print(xtable(Summary[[1]]), type="latex", sanitize.text.function = function(x){x})
EDIT: Following Dwin's suggestion of using
grepl("^ ", rownames(Summary[[1]])
That provides a more general solution. The code would change to:
named = rownames(Summary[[1]])
tags= grepl("^ ", rownames(Summary[[1]]))
rownames(Summary[[1]])= c(ifelse(tags==F,named,paste("\\hskip .5cm",named,sep=' ')))
print(xtable(Summary[[1]]), type="latex", sanitize.text.function = function(x){x})
Upvotes: 10
Reputation: 263301
Edit the output of xtable to add another column and put empty column dividers in from of the onew you want to indent: (and assuming appropriate document header and footer.)
\begin{tabular}{llrrr}
\hline
& fac & Df & Sum Sq & Mean Sq \\
\hline
N & & 2 & 1016.67 & 508.33 \\
& N: L & 1 & 1012.50 & 1012.50 \\
& N: Q & 1 & 4.17 & 4.17 \\
P & & 2 & 917.39 & 458.69 \\
& P: L & 1 & 917.35 & 917.35 \\
& P: Q & 1 & 0.04 & 0.04 \\
N:P & & 4 & 399.28 & 99.82 \\
& N:P: L.L & 1 & 184.08 & 184.08 \\
&N:P: Q.L & 1 & 152.11 & 152.11 \\
&N:P: L.Q & 1 & 49.00 & 49.00 \\
&N:P: Q.Q & 1 & 14.08 & 14.08 \\
\hline
\end{tabular}
Upvotes: 2