当列表中存在相同的图像时,如何生成图像列表并将其粘贴到数据框中?

时间:2019-07-05 21:23:39

标签: r-markdown kable

这类似于我的previous post

使用软件包qrcode,我可以生成QR码列表并将其粘贴到数据框中,然后可以将其打印到htmlpdf上。我遇到麻烦的地方是,当列表中有连续相同的结果时,只有一张图像被保存为.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")

```

现在,这是一个不起作用的示例。唯一的区别是“结果”数据的顺序。我已经取得了两个连续的结果,即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}"),其中不排除数据。

0 个答案:

没有答案