R xtable输出中的列对齐

R xtable输出中的列对齐,r,latex,sweave,xtable,R,Latex,Sweave,Xtable,我正在使用xtable管理R中的swave输出。见下面的代码: 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(

我正在使用
xtable
管理
R
中的
swave
输出。见下面的代码:

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

CC编辑xtable的输出以添加另一列,并在要缩进的列中插入空列分隔符:(并假设文档页眉和页脚适当。)


此示例演示如何结合使用xtable中的
sanitize
参数和latex中的函数
\hskip
来自定义表

守则是:

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})
这提供了一个更普遍的解决方案。守则将改为:

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

这可能需要一个更深入的LaTeX解决方案,可能像上面所描述的那样,这可以通过破解
sanitize.text.function
参数来实现。另一个选项是Hmisc包中更灵活的LaTeX命令。(+1):这是一个好主意。你能提供R代码来获得它吗?ThanksI刚刚复制了xtable的控制台输出(摘要[[1]]),并在TeXShop中编辑了它。(+1):回答得很好。这就是我要找的。请为其他人附加输出快照。再次感谢。@DWin我没有得到错误。但是,您的grepl(^),rownames(摘要[[1]])对我的代码来说是一个巨大的改进。我将使用它更新我的答案。谢谢!!!我删除了关于错误的评论。我的编辑太多了。很高兴您在grepl()中发现了价值策略。现在它是更通用的。非常棒的解决方案。ThanksI无法重现这些结果。仅当值封装在
$
中时,“清理文本”功能似乎才起作用。对于所有其他文本,应用通常的格式。
grepl("^ ", rownames(Summary[[1]])
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})