如何在 R Markdown 或闪亮的 DT 列内显示图像?

How to display image inside column with DT in R Markdown or shiny?

---
title: "Untitled"
runtime: shiny
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r}
df <- data.frame(image = "http://www.ufotm.com/data/attachment/forum/201203/11/110705gf50r55yqcka5ffz.jpg", title = "here is a title")
DT::renderDataTable(df,
                escape = FALSE,
                rownames = FALSE,
                extensions = 'Buttons', options = list(
                    dom = 'lBfrtip',
                    buttons = c('copy', 'csv', 'excel', 'pdf', 'print')
                    )
)
```

我有图像 url。我尝试在 rmarkdown 或 shiny 应用程序中插入图像。我更喜欢 DT 库,因为我可以下载 excel 文件。我该怎么做?

PS: 我想提供 excel 或 pdf 文件供我的用户下载。

我尝试使用DataTables Options, and find a related question。我尝试了下面的代码,它显示错误。

---
    title: "Untitled"
runtime: shiny
output: html_document
---

df <- data.frame(image = "http://www.ufotm.com/data/attachment/forum/201203/11/110705gf50r55yqcka5ffz.jpg", title = "here is a title")
DT::renderDataTable(df,
                    escape = FALSE,
                    rownames = FALSE,
                    extensions = 'Buttons', options = list(
                        dom = 'lBfrtip',
                        buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),
                        columnDefs = list(list(targets = 1,
                                               data = "img",
                                               render = JS(
                                                   'function ( url, type, full) {',
                                                   'return '<img height="75%" width="75%" src="'+full[7]+'"/>';',
                                                   '}'
                                               )
                        ))
                    )
)

您可以使用 html 标签并使用 escape = FALSE 如下:

---
title: "Untitled"
runtime: shiny
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r}
df <- data.frame(image = c('<img src="http://www.ufotm.com/data/attachment/forum/201203/11/110705gf50r55yqcka5ffz.jpg" height="52"></img>' ), title = "here is a title")
DT::renderDataTable(df, escape = FALSE)
```

你会得到这样的东西: