如何使用 DT、R 和 Shiny 在表格的单元格中嵌入图像

Posted

技术标签:

【中文标题】如何使用 DT、R 和 Shiny 在表格的单元格中嵌入图像【英文标题】:How to embed an image in a cell a table using DT, R and Shiny 【发布时间】:2015-08-20 17:23:14 【问题描述】:

如何在使用 DT 包生成的单元格中嵌入图像,以便使用闪亮的应用程序显示?

我的例子是基于这个问题R shiny: How do I put local images in shiny tables

下面的示例代码不显示图像,而只是显示 url。

# ui.R
require(shiny)
library(DT)

shinyUI(
  DT::dataTableOutput('mytable')
)

# Server.R
library(shiny)
library(DT)


dat <- data.frame(
  country = c('USA', 'China'),
  flag = c('<img src="test.png" ></img>',
           '<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Flag_of_the_People%27s_Republic_of_China.svg/200px-Flag_of_the_People%27s_Republic_of_China.svg.png" ></img>'
           )
)

shinyServer(function(input, output)
  output$mytable <- DT::renderDataTable(

    DT::datatable(dat)
  )
)

【问题讨论】:

【参考方案1】:

您可以在 DT 呼叫中使用escape = FALSE,如:https://rstudio.github.io/DT/#escaping-table-content

# ui.R
require(shiny)
library(DT)

shinyUI(
  DT::dataTableOutput('mytable')
)

# Server.R
library(shiny)
library(DT)


dat <- data.frame(
  country = c('USA', 'China'),
  flag = c('<img src="test.png" ></img>',
           '<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Flag_of_the_People%27s_Republic_of_China.svg/200px-Flag_of_the_People%27s_Republic_of_China.svg.png" ></img>'
           )
)

shinyServer(function(input, output)
  output$mytable <- DT::renderDataTable(

    DT::datatable(dat, escape = FALSE) # HERE
  )
)

【讨论】:

目前,它对我不起作用。可能是因为包的一些变化? @FissehaBerhane 建议您使用 MWE 打开一个新问题(最小工作示例) 这个答案可以帮助服务器上的图像***.com/questions/47804593/…【参考方案2】:

2021 年的小幅更新:

require(shiny)
library(DT)

shinyUI <- DT::dataTableOutput('mytable')

dat <- data.frame(
  country = c('China'),
  flag = c('<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Flag_of_the_People%27s_Republic_of_China.svg/200px-Flag_of_the_People%27s_Republic_of_China.svg.png" ></img>'
  )
)

#now this is a function
shinyServer <- function(input, output)
  output$mytable <- DT::renderDataTable(
    
    DT::datatable(dat, escape = FALSE) # HERE
  )


#minor change to make it runnable
shinyApp(shinyUI, shinyServer)

【讨论】:

您能否回答edit 解释您所做的更改以及原因?这将使这对未来的观众更有用。

以上是关于如何使用 DT、R 和 Shiny 在表格的单元格中嵌入图像的主要内容,如果未能解决你的问题,请参考以下文章

Shiny:合并 DT::datatable 中的单元格

R Shiny DT::renderDataTable ...如何在下载的表格中自定义标题

在每个单元格的Shiny数据表中显示工具提示或弹出窗口?

R语言-在shiny中使用DT包的常用设置

如何使用 R Shiny 中的 DT 包格式化数据表输入?

R + Shiny + DT :下载过滤数据