R、knitr、xtable和交替行颜色

24

我正在尝试使用R中的xtableknitr生成一个带有交替行颜色的表格。我可以在PDF输出中打印一张表格,但是无法完全理解xtable手册中的add.to.row命令以及colortbl包。


5
提供一个最小工作示例通常会有所帮助,你可以附上你的尝试以及失败的地方。 - Roman Luštrik
如果您不坚持使用颜色,而是强调高亮显示符合您的需求,那么您可以尝试在pander包中使用emphasize.*函数,即使在HTML/docx/odt格式中也可以:http://blog.rapporter.net/2013/04/hihglight-cells-in-markdown-tables.html - daroczig
包gridExtrahttps://dev59.com/hnbZa4cB1Zd3GeqPBQ15还提供了漂亮的表格格式设置。 - user2030503
1个回答

37

这张图是使用底部的代码生成的。希望您在检测浅灰色时不要伤害您的眼睛(我在其中一个屏幕上几乎受伤了)。

library(xtable)
mydf <- data.frame(id = 1:10, var1 = rnorm(10), var2 = runif(10))
rws <- seq(1, (nrow(mydf)-1), by = 2)
col <- rep("\\rowcolor[gray]{0.95}", length(rws))
print(xtable(mydf), booktabs = TRUE,
      add.to.row = list(pos = as.list(rws), command = col))

关键在于定义行索引 (rws) 和它们各自的颜色 (col)。如果你想让每一行的颜色不同,你需要尝试使用 paste

\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage{booktabs}
\usepackage{colortbl, xcolor}

\begin{document}

<<do_table, results = "asis">>=
library(xtable)
mydf <- data.frame(id = 1:10, var1 = rnorm(10), var2 = runif(10))
rws <- seq(1, (nrow(mydf)), by = 2)
col <- rep("\\rowcolor[gray]{0.95}", length(rws))
print(xtable(mydf), booktabs = TRUE, 
   add.to.row = list(pos = as.list(rws), command = col))
@

\end{document}

1
您对Gray Code的解释是什么?突出显示相差一个十六进制数字的色阶? - baptiste
1
@baptiste 很抱歉,我不明白这个问题。我的颜色选择没有特别的动机。我只是随意挑选了一些东西作为示例。 - Roman Luštrik
嗨Roman,感谢您提供的代码!我知道这已经是几年前的事了,但您知道如何使颜色从第一行开始吗?仅仅以0开始序列会给我一个黑色方块。 - panuffel
1
@panuffel 复制我的代码,开一个新问题,展示你尝试过的内容,看解决方案如雨般降临。 :) - Roman Luštrik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接