我尝试使用xtable和knitr创建一个包含插入汇总行的表。我希望这些插入的线条颜色不同。使用add.to.row选项,我设法插入行或更改颜色,但不能同时更改两者。
我在xtable中插入行而不是提前插入行的原因是我想要"总计"由于在原始数据集中的长度,行将分布在两列上。因此,所需的解决方案将在摘要行中具有多列单元格和不同颜色的背景。 我在乳胶学习曲线的最开始,我会非常感激任何帮助。
以下是一个示例,包括假数据集:
\usepackage{booktabs}
\usepackage{colortbl, xcolor}
\begin{document}
<<try, echo = FALSE, eval = TRUE, results = 'asis'>>=
library(xtable)
dat <- data.frame(type = c(rep("a", 5), rep("b", 5)), a = c(1:5, 1:5), b = 1:10, c = 21:30)
temp <- ddply(dat, .(type), summarize, SumB = sum(b))
rws <- which(dat$a == 5)
col <- rep("\\rowcolor[gray]{0.95}", length(rws)) ## colour definition prepared, but not used
#Making the command for inserting summary rows
temp$insert <- ""
for(i in 1:nrow(temp)){
temp[i,]$insert <- sprintf("\\multicolumn{3}{l}{Total %s} &
\\multicolumn{1}{c}{%d} \\\\ ", temp[i,]$type, temp[i,]$SumB)
}
print(xtable(dat, align = "llccc"),
include.rownames=FALSE,
booktabs = TRUE,
sanitize.text.function=function(x){x},
add.to.row = list(pos = as.list(rws),
command = paste(temp$insert, sep = ",")))
@
\end{document}
答案 0 :(得分:0)
我说colortbl
就够了,这里不需要xcolor。
尝试将rowcolor
添加到您的命令中,如下所示:
print(somextable,
floating=FALSE,
hline.after=NULL,
size="\\footnotesize",
add.to.row=list(pos=list(-1,0,nrow(somextable),0,
1,2,3,
4,5,6,
7,8,9,10,11
),
command=c('\\toprule ',
'\\midrule ',
'\\bottomrule',
'\\\\ \\rowcolor[gray]{.9}',
'\\rowcolor[gray]{.97}',
'\\rowcolor[gray]{.97}',
'\\\\ \\rowcolor[gray]{.9}',
'\\rowcolor[gray]{.97}',
'\\rowcolor[gray]{.97}',
'\\\\ \\rowcolor[gray]{.9}',
'\\rowcolor[gray]{.97}',
'\\rowcolor[gray]{.97}',
'\\rowcolor[gray]{.97}',
'\\rowcolor[gray]{.97}',
'\\rowcolor[gray]{.97}'
)
)
)
也应该与add.to.row中的一般创建行一起使用。