将图像添加到R中的数据表

Ale*_*ade 5 datatable r dt

我正在尝试将图像添加到R形式的数据DT包中.我想到了这个问题:如何使用DT,R和Shiny将图像嵌入到单元格中,它适用于在线图像.但是当我试图添加一个我在本地(用R它创建)的图像时,它就没有出现.这是我的问题的一个例子:

x = rnorm(1000)   
png(paste0("Graficas/test.png"))
Plot = plot(x, type = "l")
dev.off()
camino = '<img src="Graficas/test.png" height="30"></img>'
data = data.frame(0.5,camino)
datatable(data, escape = FALSE)
Run Code Online (Sandbox Code Playgroud)

输出是在此输入图像描述

我无法理解为什么会发生这种情况

hrb*_*str 5

这是一种方法(通过嵌入base64编码的图像并使用它src).

首先,我们将做一个小帮手:

img_uri <- function(x) { sprintf('<img src="%s"/>', knitr::image_uri(x)) }
Run Code Online (Sandbox Code Playgroud)

这将让我们制作一个数据uri.我们正在整理整个文件并将其转换为base64,然后在将整个blob粘贴到src属性之前进行更多格式化.

这就是1x1像素PNG看起来像这样编码的方式:

<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEX/TQBcNTh/AAAAAXRSTlPM0jRW/QAAAApJREFUeJxjYgAAAAYAAzY3fKgAAAAASUVORK5CYII=\"/>
Run Code Online (Sandbox Code Playgroud)

所以,我们只对你创建的那个做同样的事情:

x = rnorm(1000)   
png(paste0("test.png"))
Plot = plot(x, type = "l")
dev.off()

camino = img_uri("test.png")
data = data.frame(0.5 ,camino)
DT::datatable(data, escape = FALSE)
Run Code Online (Sandbox Code Playgroud)

您的问题是b/c它不是"URI",它无法从本地系统中提取.它可能在带有file://…URL 的浏览器上下文中工作.