我的闪亮服务器上有一个数据表,在server.R中定义如下:
output$datamining_table <- DT::renderDataTable(datatable(values$datamining_list,selection="single",
option=list(lengthMenu = list(c(5, 10,20, -1), c('5', '10','20', 'All')),
pageLength = 10,scrollX=T),filter = "top",rownames = F))
我的ui.R中还有一个带有按钮的selectizeInput。当我选择selectizeInput的特定值并单击按钮时,我希望下面的数据表可以过滤我的selectizeInput的值。
例如:
数据表:
如果在selectizeInput中我选择Name1然后点击我的按钮,我希望我的数据表看起来像:
将第一列的过滤条件设置为Name1,以便我可以对其进行过滤。 有人会知道如何实现这个目标吗?
非常感谢你的帮助!
编辑: 这是一个可重现的代码:
library(shiny)
library(DT)
runApp(list(
ui=
div(selectizeInput("selectInput","filter",c("a","b","c"),options=list(maxItems=1,create = F,onInitialize = I('function() { this.setValue(""); }'))),
dataTableOutput("datamining_table")
),
server=function(input, output, session) {
values <- reactiveValues()
values$datamining_list <- data.frame(name =c("a","b","c"),
value = c(1,2,3))
output$datamining_table <- DT::renderDataTable(datatable(values$datamining_list,selection="single",
option=list(lengthMenu = list(c(5, 10,20, -1), c('5', '10','20', 'All')),
pageLength = 10,scrollX=T),filter = "top",rownames = F))
}))
答案 0 :(得分:0)
这应该会有所帮助。
library(shiny)
library(DT)
### User Interface
ui <- shinyUI(fluidPage(
mainPanel(
fluidRow(
selectizeInput("selectInput",label ="Filter", choices= NULL, selected = NULL)
),
fluidRow(
DT::dataTableOutput("datamining_table")
)
)
)
)
server <- shinyServer(function(input, output,session){
myDataFrame <- data.frame(name =c("a","b","c"),
value = c(1,2,3))
updateSelectizeInput(session, 'selectInput', choices = c('a','b','c'), server = TRUE)
filterData <- reactive({
myDataFrame[which(myDataFrame$name == input$selectInput),]
})
output$datamining_table <- DT::renderDataTable({
DT::datatable(filterData(),selection="single",rownames = F)
})
})
shinyApp(ui = ui, server = server)