2

我正在尝试使用 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}
4

1 回答 1

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 中一般创建的行。

于 2013-08-16T20:56:48.843 回答