我编写了一个脚本来生成rmarkdown
报告,当以kable
输出为pdf格式时,该报告会将包含数值结果的QR码附加到数据框(请参阅我的相关文章{{3} }。 QC代码作为图像矢量生成,并在生成报告时附加到数据框中的新列。
这很好,但是要以.pdf格式输出表格,我必须设置kable(df, format = "markdown")
,否则QR Code的图像不会放在输出表格中,而只会放在文件路径文本中。除非我想使用kableExtra格式选项修改表,否则该方法正常工作,该选项要求kable
格式为latex
。
在下面列出的示例代码中,您可以看到,kable(df, format = "markdown")
图像的格式正确,但是kableExtra
格式不起作用。相反,当kable(df, format = "latex")
和kableExtra
格式选项起作用但图像不起作用时。
---
title: "QR Code in Column"
author: "me"
date: "2019/01/20"
output: pdf_document
---
```{r mychunk, echo = FALSE, fig.path = "qr/", results = 'asis', fig.show='hide'}
library(knitr)
library(qrcode)
library(kableExtra)
df <- data.frame(test = LETTERS[1:2],
result = as.character(round(rnorm(2), 2)),
stringsAsFactors = F)
res.qr <- lapply(df$result, function(qr) {
qrcode_gen(qr) # create qrcodes
nrow(qr) # save number of rows of df
})
path <- paste0(opts_current$get("fig.path"), opts_current$get("label"), "-")
total <- 0
df$Code <- paste0("![](", path, (1:length(res.qr)) + total, ".pdf){width=72px}")
```
```{r echo = FALSE}
# This example works to generate the desired output, but the kableExtra options won't work.
kable(df, format = "markdown") %>%
add_header_above(c(" ", "Class 1" = 2))
```
```{r echo = FALSE}
# This example works to use the kableExtra formatting options, but the QR Code isn't an image.
kable(df, format = "latex") %>%
add_header_above(c(" ", "Class 1" = 2))
```
我希望能够使用kableExtra
格式化.pdf文件中的输出表,但是我对可能起作用的任何其他选项持开放态度!