HTML/CSS 不会按照您隐式假设的方式呈现。如果渲染遵循以下过程,您的代码将按预期工作:
- 设置:“桌子是绿色的”
- 输出绿色表格
- 设置:“表格是黄色的”
- 输出黄色表格
但事实并非如此。实际发生的是:
- 设置:“所有表格都是绿色的”
- 输出表1
- (表1为绿色)
- 设置:“所有表格都是黄色的”
- 输出表2
- (表1和表2为黄色)
作为一种解决方案,您可以使用两个不同的类:
<style>
.lightgreen {
background-color:#eff8e5;
}
.yellow {
background-color:#ffff99;
}
</style>
(最好,类名应该描述使用该类的原因,而不是该类当前的外观,但如果没有更多信息,最好使用“浅绿色”和“黄色”我想出的名字)。
现在您需要告诉kable 应该为这些表分配这些类。
选项 1:
kable(df1, format = "html", table.attr = "class=\"lightgreen\"")
kable(df2, format = "html", table.attr = "class=\"yellow\"")
但是,这会去除大部分(可能是所需的)默认表格布局。
选项 2:在表格周围添加一个容器并在该容器中设置表格样式。
<style>
.lightgreen table {
background-color:#eff8e5;
}
.yellow table {
background-color:#ffff99;
}
</style>
<div class = "lightgreen">
```{r}
library(knitr)
df1 <- data.frame(a=1:10, b=2:11)
kable(df1)
```
</div>
<div class = "yellow">
```{r}
df2 <- data.frame(a=1:10, b=2:11)
kable(df2)
```
</div>