我无法使cellcolor在rmarkdown中工作:
---
header-includes:
- \usepackage{colortbl}
- \usepackage{color}
output:
pdf_document
---
```{r, results="asis"}
library(xtable)
# Your data
tab = data.frame(category = c("A","B","C"), groupA = c(.2,.3,.5), groupB= c(.6,.7,.9))
# Function to cut your data, and assign colour to each range
f <- function(x) cut(x, c(0, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, Inf),
labels=c("green", "red", "blue", "orange", "yellow", "purple", "brown", "white"),
include.lowest = FALSE, right = TRUE)
# Apply function to columns: this overwrites your data
tab[c("groupA", "groupB")] <- lapply(tab[c("groupA", "groupB")], function(x)
paste0("\\cellcolor{", f(x), "}", x))
# Sanitise output
print(xtable(tab), sanitize.text.function = identity)
```
我不断收到此错误:
! Undefined control sequence.
l.155 1 & A & \cellcolor
有什么想法cellcolor需要起作用吗?
最佳答案
更新
当包含\usepackage[dvipsnames]{xcolor}
时,OP的示例对我有效。对于另一种方法,请参见下文。
替代方法
这是使用非常方便的condformat
包的另一种方法。这样,您不必手工包括任何TeX软件包,也不必担心转义特殊字符等。
我们基本上创建了一个condformat_tbl
对象,并为每列添加了两个格式化规则。
---
output:
pdf_document
---
```{r, include = F}
library(condformat)
cols <- c('green', 'red', 'blue', 'orange',
'yellow', 'purple', 'brown', 'white')
names(cols) <- cols # important for the colours arg in rule_fill_discrete
# since it matches the result of 'expression' with the names of the 'colours' vector
f <- function(x) cut(x, c(0, seq(.2, .8, .1), Inf), labels = cols,
include.lowest = FALSE, right = TRUE)
tab <- data.frame(category = c('A', 'B', 'C'),
groupA = c(.2, .3, .5),
groupB = c(.6, .7, .9))
```
```{r, results = 'asis', echo = F}
condformat(tab) +
rule_fill_discrete(groupA, expression = f(groupA), colours = cols) +
rule_fill_discrete(groupB, expression = f(groupB), colours = cols)
```
注意,
rule_fill_discrete
中colors参数的值是键-值对的向量。键是表达式的可能结果。这就是您得到的:
关于r - 如何在rmarkdown pdf输出中为单元格上色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45311909/