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,交替行颜色的主要内容,如果未能解决你的问题,请参考以下文章