首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搜索栏模块在R中闪亮如何返回结果

问搜索栏模块在R中闪亮如何返回结果
EN

Stack Overflow用户
提问于 2020-11-13 06:03:09
回答 1查看 167关注 0票数 0

我正在尝试制作一个闪亮的模块,它将基于自定义搜索栏更改datatable。

我设法制作了一个应用程序,它将把搜索栏搜索的结果打印到R-Studio控制台中,但是,我如何从模块返回结果并更新反应式数据存储?

这是一个示例应用程序,我想返回打印的内容来更新反应:

代码语言:javascript
复制
myModuleUI <- function(id) {
  ns <- NS(id)
  tagList(
    fluidRow(
      column(width=2, 
          textInput(ns("searchField"), "Search"),
          dataTableOutput("table")
      )
    )
  )
}
myModule <- function(input, output, session, df) {
  observeEvent(input$searchField, {
    if(!is.null(input$searchField)){
      print(
        df %>% filter_at(vars(names(df)), any_vars(str_detect(as.character(.), input$searchField)))
      )
    }
  })
}
# Use the module in an application
ui <- fluidPage(
  myModuleUI("myModule1")
)
server <- function(input, output, session) {
  out <- reactiveValues(
    df = data.frame(
      company = c('a', 'b', 'c', 'd'),
      bond = c(0.2, 1, 0.3, 0),
      equity = c(0.7, 0, 0.5, 1),
      cash = c(0.1, 0, 0.2, 0),
      stringsAsFactors = FALSE
    )
  )
  callModule(myModule, "myModule1", df = out$df)
  output$table <- DT::renderDataTable({
    m <- datatable(
      out$df,
      options = list(dom = 'tip')
    )
  })
}
shinyApp(ui, server)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-13 06:22:46

您还必须在datatableOutput outputId上使用ns(),因此您可以在模块中使用它:

代码语言:javascript
复制
myModuleUI <- function(id) {
  ns <- NS(id)
  tagList(
    fluidRow(
      column(width=2, 
             textInput(ns("searchField"), "Search"),
             dataTableOutput(ns("table"))
      )
    )
  )
}
myModule <- function(input, output, session, df) {
  output$table <- DT::renderDataTable({
    datatable(
      if(!is.null(input$searchField)){
          df %>% filter_at(vars(names(df)), any_vars(str_detect(as.character(.), input$searchField)))
      } else df,
      options = list(dom = 'tip')
    )
  })
}
# Use the module in an application
ui <- fluidPage(
  myModuleUI("myModule1")
)
server <- function(input, output, session) {
  out <- reactiveValues(
    df = data.frame(
      company = c('a', 'b', 'c', 'd'),
      bond = c(0.2, 1, 0.3, 0),
      equity = c(0.7, 0, 0.5, 1),
      cash = c(0.1, 0, 0.2, 0),
      stringsAsFactors = FALSE
    )
  )
  callModule(myModule, "myModule1", df = out$df)
}
shinyApp(ui, server)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64812459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档