2013-08-16 119 views
2

我試圖用xtable和knitr插入彙總行來製作表格。我想要以不同的顏色插入這些插入的行。使用add.to.row選項,我設法插入行改變顏色,但不能同時改變顏色。xtable - 添加行的背景顏色

我在xtable中插入行而不是提前的原因是我希望「total」行分佈在兩列,因爲它的長度在我的原始數據集中。因此,所需的解決方案將包含彙總行中的多列單元格和不同顏色的背景。 我在我的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} 

回答

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一般創建的行工作。

+0

我可能在這裏丟失了一些東西,因爲我在發佈的假數據集上運行它所得到的是帶有所有表值的運行行的pdf:「type abc 1 a 1 1 21 2 a 2 2 22 3 a 3 3 23 4 a 4 4 24 5 a 5 5 25 6 b 1 6 26 7 b 2 7 27 8 b 3 8 28 9 b 4 9 29 10 b 5 10 30「...任何提示? – user2602640

+0

在我的示例中,'somextable'對象已經是類'xtable'。這導致了'print.xtable'方法。聽起來像你忘了xtable()? –

+0

啊,是的。糾正了這個令人眩目的問題並擺弄了一下之後,它就起作用了。謝謝! – user2602640