R,knitr,xtable,交替行颜色

Posted

技术标签:

【中文标题】R,knitr,xtable,交替行颜色【英文标题】:R, knitr, xtable, alternating row colors 【发布时间】:2013-05-10 21:09:34 【问题描述】:

我正在尝试在 R 中使用 knitr 和交替的行颜色生成一个带有 xtable 的表格。我可以在 PDF 输出中打印一个表格,但不能完全弄清楚 xtable 手册中的 add.to.row 命令以及 colortbl 包。

【问题讨论】:

提供一个最低限度的工作示例通常会很有帮助,说明您正在尝试做什么,以及您的努力和失败之处。 如果您不坚持着色但强调(强烈)强调将满足您的需求,那么您可以尝试emphasize.* 函数,即使是pander 中的html/docx/odt 格式包:blog.rapporter.net/2013/04/… gridExtra [***.com/questions/18414001/… 包也提供了不错的表格格式。 [1]:***.com/questions/18414001/… 【参考方案1】:

此图是使用底部的代码生成的。我希望你不会因为检测到浅灰色而伤到眼睛(我几乎有,在我的一个屏幕上)。

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
\usepackagebooktabs
\usepackagecolortbl, xcolor

\begindocument

<<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))
@

\enddocument

【讨论】:

你对灰码高亮的解释:相差一个十六进制数字的阴影? @baptiste 恐怕我不明白这个问题。我对颜色的选择没有特别的动机。我只是或多或少地随机挑选了一些东西,因为它仅用于说明目的。 您好 Roman,感谢您的代码!我知道那是几年前的事了,但你知道如何让颜色从第一行开始吗?只需从 0 开始序列就会给我一个黑色方块。 @panuffel 复制我的代码,打开一个新问题,展示您尝试过的内容,然后查看解决方案。 :)

以上是关于R,knitr,xtable,交替行颜色的主要内容,如果未能解决你的问题,请参考以下文章

xtable + knitr 设置列宽html

R,knitr不尊重块和文本的顺序

QTreeWidget 交替行颜色设置

CSS表格交替行颜色和悬停颜色[重复]

如何让GridView的行颜色交替

ttk treeview:交替行颜色