【问题标题】:Shiny "updateCheckboxGroupInput" inconsistency闪亮的“updateCheckboxGroupInput”不一致
【发布时间】:2023-03-05 18:20:02
【问题描述】:

我不知道这是否只是一个功能的错误,但 Shiny 中的 updateCheckboxGroupInput 功能无法始终如一地工作。当我使用selected=FALSE 更新组以取消选择所有选项时,相关的反应组件(观察者、UI 元素)不会改变任何内容。我知道有很多方法可以完成这项任务,我的意思是说明updateCheckboxGroupInputselected 参数缺乏一致性。

这是一个简化的示例,它表示使用几个操作按钮来选择/取消选择组中的所有选项的问题。使用selected=FALSE 更新后,所有选项都将被取消选择,但更改不会影响关联的反应组件(在本例中为verbatimTextOutput),就像选择全部一样。

谁能解释一下为什么updateCheckboxGroupInput 没有按预期工作?

  choices <- letters[1:5]
  runApp(list(
    ui = basicPage(
      checkboxGroupInput('chkGrp', 'Options', choices),
      actionButton("all","All"),
      actionButton("none","None"),
      verbatimTextOutput("value")
    ),
    server = function(input, output, session) {
       output$value <- renderPrint({ input$chkGrp })
       observe({
          if ( is.null(input$all) || input$all == 0)
               return()
          updateCheckboxGroupInput(session,"chkGrp",selected=choices )
       })
       observe({
          if ( is.null(input$none) || input$none == 0)
               return()
          updateCheckboxGroupInput(session,"chkGrp",selected=FALSE)
       })
    }
  ))

【问题讨论】:

  • 如果你设置selected=NULL会发生什么
  • 如果您设置selected=NULL,它不会取消选中复选框。

标签: shiny


【解决方案1】:

当您使用updateCheckboxGroupInput 时,您仍然需要提供其中的内容。

rm(list = ls())
library(shiny)
choices <- letters[1:5]
runApp(list(
  ui = basicPage(
    checkboxGroupInput('chkGrp', 'Options', choices),
    actionButton("all","All"),
    actionButton("none","None"),
    verbatimTextOutput("value")
  ),
  server = function(input, output, session) {
    output$value <- renderPrint({ input$chkGrp })
    observe({
      if ( is.null(input$all) || input$all == 0)
        return()
      updateCheckboxGroupInput(session,"chkGrp",selected=choices )
    })
    observe({
      if ( is.null(input$none) || input$none == 0)
        return()
      updateCheckboxGroupInput(session,"chkGrp",choices = choices,selected=NULL)
    })
  }
))

【讨论】:

  • 感谢您的回答,它解决了问题,但我仍然想知道为什么如果仅使用selected 参数取消选择所有框并且input$chkGrp 返回NULLoutput$value 没有更新?
猜你喜欢
  • 1970-01-01
  • 2015-05-28
  • 1970-01-01
  • 2019-02-12
  • 1970-01-01
  • 2020-08-08
  • 2016-05-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多