是否可以使用knitr
将类属性应用于单个表格单元格?我已成功将类属性应用于包含knitr::kable
生成的表的节标题,并使用它来格式化整个表。但是,我希望能够有条件地格式化单个单元格,这些单元格需要能够将类应用于特定的<td>
元素。
我目前的解决方法是以编程方式将单元格内容包装在一对<span>
标记中,然后将其传递给knitr::kable
。这种方法只允许我格式化单元格内的文本与整个单元格(例如设置单元格背景颜色)。以下是我目前正在使用的示例:
## Read in the report, process the data, send to kable
rpt <- generate.report()
mutate(rpt, Col2 = ifelse(abs(Col2) > Threshold,
paste('<span class="warning">',
sprintf("%.2f", Col2), '</span>'),
sprintf("%.2f", Col2))) %>%
knitr::kable(format="markdown", align = c("l", rep("r", 4)),
col.names = gsub("\\.", "<br>", colnames(.)))
这导致以下示例HTML输出:
<td align="right"><span class="warning"> -1.74 </span></td>
我希望能够让knitr :: kable生成这样的东西:
<td align="right" class="warning"> -1.74 </td>
这样我可以将css样式应用于<td>
标记<span>
标记。
答案 0 :(得分:7)
包ReporteRs
可能有所帮助。看看FlexTable。
然后,您可以使用函数as.html
获取相应的HTML代码,并在knitr
代码中重复使用。
答案 1 :(得分:0)
好的,这可能不是 的答案,但它可能会指向正确的方向。我有一个类似的问题,格式化knitr中的单个单元格来准备pdf。最后,我使用xtable并编写了一个函数,该函数依赖于逻辑矩阵来决定输出表中的单元格是否会被格式化。
我无法让自己顺利工作,所以我不得不在ivyleavedtoadflax的帮助下发布它,我能够开发一个相当容易使用的功能来应用格式化knitr中xtable中的某些细胞。
正如我所说,它不是解决问题的确切方法,但它可能会指向正确的方向。