Как сгенерировать список изображений и вставить их в кадр данных, если в списке есть идентичные изображения? - PullRequest
0 голосов
/ 06 июля 2019

Это похоже на мой предыдущий пост .

Используя пакет qrcode, я могу сгенерировать список QR-кодов и вставить их в кадр данных, который затем можно распечатать на html или pdf. У меня возникают проблемы, когда в списке присутствуют последовательные идентичные результаты, в качестве .png сохраняется только одно изображение, поэтому я не могу вставить список изображений в кадр данных, поскольку они имеют разную длину.

Я думаю, что мне чего-то не хватает в том, как эти файлы сохраняются.

Вот пример кода, который работает.

---
output: html_document
---

```{r test, echo=FALSE, fig.path="qr/", results ='asis', fig.show='hide'}
library(qrcode)
library(knitr)

#Some data
test <- LETTERS[1:5]
result <- c("55", "20", "55", "44", "65")
df <- data.frame(test, result, stringsAsFactors = FALSE)

#This generates a list of QR codes successfully
qrs <- lapply(df$result, function(qr) {
  qrcode_gen(qr)                 # create qrcode
  nrow(qr)                       # save number of rows of df
})

path <- paste0(opts_current$get("fig.path"), opts_current$get("label"), "-")

#I suspect this is where the problem exists.
df$qrs <- paste0("![](", path, seq_along(qrs), ".png){width=72px}")

kable(df, format = "html")

```

Теперь вот пример, который не работает. Единственное отличие - это порядок данных «результата». Я сделал 2 последовательных результата как 55, и результат вставляет только один из 55 результатов.

---
output: html_document
---

```{r junk, echo=FALSE, fig.path="qr/", results ='asis', fig.show='hide'}
library(qrcode)
library(knitr)

#Some data
test <- LETTERS[1:5]
result <- c("55", "55", "20", "44", "65")
df <- data.frame(test, result, stringsAsFactors = FALSE)

#This generates a list of QR codes successfully
qrs <- lapply(df$result, function(qr) {
  qrcode_gen(qr)                 # create qrcode
  nrow(qr)                       # save number of rows of df
})

path <- paste0(opts_current$get("fig.path"), opts_current$get("label"), "-")

#I suspect this is where the problem exists.
df$qrs <- paste0("![](", path, seq_along(qrs), ".png){width=72px}")

kable(df, format = "html")

```

Мне кажется, что это простое решение, но по какой-то причине оно ускользает от меня. В конце концов, все, что я ищу, это этот фрагмент кода: df$qrs <- paste0("![](", path, seq_along(qrs), ".png){width=72px}"), который не исключает данные.

...