【问题标题】:Shiny selectizeInput: on click remove the initial selected valueShiny selectizeInput:单击时删除初始选定值
【发布时间】:2017-07-09 11:08:09
【问题描述】:

当用户单击小部件时,我想从selectizeInput 中删除初始值 (selected=)。

这是一个示例代码:

library(shiny)
library(dplyr)

ui= fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectizeInput(inputId= "cyl", label= "cyl", 
                     choices= NULL, 
                     selected= sort(unique(mtcars$cyl))[1],
                     multiple=T)
    ),
    mainPanel(
      tableOutput("tab")
    )
  )
)

server= function(input, output,session) {

  updateSelectizeInput(session = session,inputId ="cyl",choices=sort(unique(mtcars$cyl)),selected=sort(unique(mtcars$cyl))[1], server = TRUE)

  df_filtered= reactive({
    mtcars %>%
    {if (is.null(input$cyl)) . else filter(., cyl %in% input$cyl)}
  })
  output$tab= renderTable(df_filtered())
}

shinyApp(ui, server)

只是基于示例代码的一点解释:

selectizeInput "cyl" 中的初始选定值为4。当用户按下此小部件时,我希望值 4 被删除 并清除 selected 选项。有任何想法吗?

*我在server 中使用了函数updateSelectizeInput,因为在我的shiny app 选项中选择很大导致加载时间过长

【问题讨论】:

    标签: r shiny htmlwidgets


    【解决方案1】:

    当用户点击选择字段时,您可以使用shinyjs::onclick调用updateSelectizeInput,例如:

    library(shiny)
    library(dplyr)
    library(shinyjs)
    
    ui= fluidPage(
      useShinyjs(),
      sidebarLayout(
        sidebarPanel(
          selectizeInput(inputId= "cyl", label= "cyl", 
                         choices= NULL, 
                         selected= sort(unique(mtcars$cyl))[1],
                         multiple=T)
        ),
        mainPanel(
          tableOutput("tab")
        )
      )
    )
    
    server= function(input, output,session) {
    
      updateSelectizeInput(session = session,inputId ="cyl",choices=sort(unique(mtcars$cyl)),selected=sort(unique(mtcars$cyl))[1], server = TRUE)
    
      df_filtered= reactive({
        mtcars %>%
        {if (is.null(input$cyl)) . else filter(., cyl %in% input$cyl)}
      })
      output$tab= renderTable(df_filtered())
    
      onclick("cyl", {
        updateSelectizeInput(session, "cyl", selected = "")
      })
    }
    
    shinyApp(ui, server)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-24
      • 2019-05-20
      • 1970-01-01
      • 2019-07-31
      • 2018-09-01
      • 1970-01-01
      • 2017-11-05
      相关资源
      最近更新 更多