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. Any help in this regard will be highly appreciated. Thanks
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})
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With