Я написал скрипт для генерации отчета rmarkdown
, который добавляет QR-код, содержащий числовой результат, к кадру данных при выводе в формате pdf в kable
(см. Мой связанный пост здесь ) , Коды QC генерируются как вектор изображений и добавляются в новый столбец в кадре данных при генерации отчета.
Это работает нормально, однако для вывода таблицы в формате .pdf мне нужно установить kable(df, format = "markdown")
, в противном случае изображение QR-кода не помещается в выходную таблицу, а просто текст пути к файлу. Это прекрасно работает, за исключением случаев, когда я хочу изменить таблицу, используя параметры формата 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))
```
Я бы хотел иметь возможность форматировать выходную таблицу в файле .pdf, используя kableExtra
, однако я открыт для любых других опций, которые могут работать!