RShiny:创建一个数据表,允许在单元格中显示图像并在顶部显示过滤功能
RShiny: Creating a datatable that allows for both image display in cell and filtering function on top
我想要一个简单的过滤器来处理我的数据table。应该可以实现如下:
##### server:
output$table <- DT::renderDT(data, filter="top")
##### ui:
DT::DTOutput('table')
或
##### server:
output$table <- DT::renderDataTable(data, filter="top")
##### ui:
DT::dataTableOutput('table')
不过,我还有一个包含图像的专栏 'data' table。这些图像在上述函数中变成了文本。图像出现在以下功能中,但是过滤器消失了:
##### server:
output$table <- DT::renderDataTable(
DT::datatable(data, escape=FALSE)
, filter="top")
##### ui:
DT::dataTableOutput('table')
如何在我的 UI 中同时使用图像和滤镜?
奖励:我最初使用 formattable 和许多其他功能来装饰我的 table 文本。我在某处读到 formattable 和过滤器到目前为止不能一起工作,因此为了功能(过滤器)而放弃了美观(彩色文本)。 Formattable 也允许显示图像。因此,如果有人有方法允许带有过滤器的格式table,那也可以完全解决问题![=13=]
假设您在 www
子文件夹中有两个图像 pic1.png
和 pic2.png
。然后你可以这样做:
library(shiny)
library(DT)
dat <- data.frame(
X = c(1, 2),
Y = c("pic1", "pic2")
)
render <- c(
"function(data, type, row){",
" if(type === 'display'){",
" var tag = '<img src=\"' + data + '.png\" width=\"100\"/>';",
" return tag;",
" } else {",
" return data;",
" }",
"}"
)
ui <- fluidPage(
br(),
DTOutput("dtable")
)
server <- function(input, output, session){
output[["dtable"]] <- renderDT({
datatable(
dat,
rownames = FALSE,
filter = "top",
options = list(
columnDefs = list(
list(targets = "_all", className = "dt-center"),
list(targets = 1, render = JS(render)) # 1 is the index of the column of images
)
)
)
})
}
shinyApp(ui, server)
我想要一个简单的过滤器来处理我的数据table。应该可以实现如下:
##### server:
output$table <- DT::renderDT(data, filter="top")
##### ui:
DT::DTOutput('table')
或
##### server:
output$table <- DT::renderDataTable(data, filter="top")
##### ui:
DT::dataTableOutput('table')
不过,我还有一个包含图像的专栏 'data' table。这些图像在上述函数中变成了文本。图像出现在以下功能中,但是过滤器消失了:
##### server:
output$table <- DT::renderDataTable(
DT::datatable(data, escape=FALSE)
, filter="top")
##### ui:
DT::dataTableOutput('table')
如何在我的 UI 中同时使用图像和滤镜?
奖励:我最初使用 formattable 和许多其他功能来装饰我的 table 文本。我在某处读到 formattable 和过滤器到目前为止不能一起工作,因此为了功能(过滤器)而放弃了美观(彩色文本)。 Formattable 也允许显示图像。因此,如果有人有方法允许带有过滤器的格式table,那也可以完全解决问题![=13=]
假设您在 www
子文件夹中有两个图像 pic1.png
和 pic2.png
。然后你可以这样做:
library(shiny)
library(DT)
dat <- data.frame(
X = c(1, 2),
Y = c("pic1", "pic2")
)
render <- c(
"function(data, type, row){",
" if(type === 'display'){",
" var tag = '<img src=\"' + data + '.png\" width=\"100\"/>';",
" return tag;",
" } else {",
" return data;",
" }",
"}"
)
ui <- fluidPage(
br(),
DTOutput("dtable")
)
server <- function(input, output, session){
output[["dtable"]] <- renderDT({
datatable(
dat,
rownames = FALSE,
filter = "top",
options = list(
columnDefs = list(
list(targets = "_all", className = "dt-center"),
list(targets = 1, render = JS(render)) # 1 is the index of the column of images
)
)
)
})
}
shinyApp(ui, server)