微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R Shiny:如何从 DT 数据表中的搜索框中获取用户输入?

如何解决R Shiny:如何从 DT 数据表中的搜索框中获取用户输入?

我使用 shiny 中的 shinydashboardR 包开发了一个仪表板。仪表板具有使用 datatable生成DT。在表格的顶部,有一个搜索框,允许用户通过输入输入来过滤表格的行。是否可以获取此输入并将其用于仪表板其他位置的反应式表达式中?

这是一个玩具示例:

library(shiny)
library(shinydashboard)
library(DT)

shinyApp(
  ui = shinyUI(
    dashboardPage(
      dashboardHeader(title = "Example"),dashboardSidebar(sidebarMenu(id = 'tabs',menuItem("Tab1",tabName = 'Tab1'))),dashboardBody(tabItems(tabItem(tabName = "Tab1",fluidRow(column(width=6,Box(DT::dataTableOutput('myTable'),width=NULL)),column(width=6,Box(textoutput("myText"),width=NULL))))))
      )
  ),server = function(input,output,session){
    mytbl <- data.frame(Name = c('Matthew','Luke','John'),Grade=c(45,20,80))
    output$myTable <- DT::renderDataTable({DT::datatable(mytbl,rownames=FALSE)})
    output$myText <- renderText({ "The value entered in the seach Box should appear here!" })
  }
)

解决方法

datatable 函数中使用此回调:

callback = JS(
  "table.on( 'search.dt',function () {","Shiny.setInputValue( 'search',table.search() );","} );"
)

然后在 Shiny 服务器中,您在反应变量 input$search 中有用户输入。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。