2

xtable と Knitr を使用して、集計行が挿入されたテーブルを作成しようとしています。これらの挿入された線を別の色にしたいと思います。add.to.row オプションを使用して、行を挿入するか色を変更することができましたが、両方を同時に行うことはできませんでした。

事前にではなく xtable 内に行を挿入する理由は、元のデータセットの長さのために、「合計」行を 2 つの列に分散させたいからです。したがって、必要なソリューションには、集計行の複数列セルと異なる色の背景の両方が含まれます。私は Latex 学習曲線の始まりにいます。どんな助けも大歓迎です。

偽のデータセットを含む例を次に示します。

\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

ここでxcolorcolortblは必要ありません。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 に答える