【问题标题】:R Shiny checkboxGroupInput - select all checkboxes by clickR Shiny checkboxGroupInput - 通过单击选择所有复选框
【发布时间】:2015-03-03 10:40:14
【问题描述】:

我有一个包含 checkboxGroupInput 的 R Shiny 应用程序,我正在尝试使用 updateCheckboxGroupInput 函数创建一个“全选”按钮。 您可以在下面看到完整的代码,但基本上我是这样定义 cb 组的:

checkboxGroupInput("campaigns","Choose campaign(s):",campaigns_list)

然后,单击按钮,调用函数:

updateCheckboxGroupInput(session,"campaigns","Choose campaign(s):",choices=campaigns_list,selected=campaigns_list)

我有迹象表明该函数已运行,但它实际上是取消选中复选框。 顺便说一句,当我在定义 cbGroupInput 时选择了它确实有效,但不是在函数上。

谢谢!

这是我的服务器。R:

library(shiny)
source('usefulFunctions.R')
shinyServer(function(input, output, session) {

  output$cascading <- renderUI({
    provider_id <- input$provider
    if (provider_id == "") return(NULL)
    campaigns_list <<- t(getCampaigns(provider_id))
    tagList(
      checkboxGroupInput("campaigns","Choose campaign(s):", 
                         choices = campaigns_list, selected = campaigns_list),
      actionLink("selectall","Select All")
      )
  })

  observe({
    if(is.null(input$selectall)) return(NULL)
    if (input$selectall > 0)
    {
      print(campaigns_list)
      updateCheckboxGroupInput(session,"campaigns","Choose campaign(s):",choices=campaigns_list,selected=campaigns_list)
    }
    })


})

【问题讨论】:

标签: r shiny


【解决方案1】:

我还在此处添加了选择和取消选择选项,方法是检查按钮或链接是否可被 2 整除

#rm(list = ls())
library(shiny)
campaigns_list <- letters[1:10]

ui =fluidPage(
  checkboxGroupInput("campaigns","Choose campaign(s):",campaigns_list),
  actionLink("selectall","Select All") 
)
server = function(input, output, session) {

  observe({
    if(input$selectall == 0) return(NULL) 
    else if (input$selectall%%2 == 0)
    {
      updateCheckboxGroupInput(session,"campaigns","Choose campaign(s):",choices=campaigns_list)
    }
    else
    {
      updateCheckboxGroupInput(session,"campaigns","Choose campaign(s):",choices=campaigns_list,selected=campaigns_list)
    }
  })
}
runApp(list(ui = ui, server = server))

【讨论】:

    【解决方案2】:

    如果campaigns_list 是一个列表,可能是因为您指定了所有选项的列表,而不是应该在updateCheckboxGroupInputselected 参数中选择的框的值。

    尝试将selected=campaigns_list 替换为selected=unlist(campaigns_list)

    这里是一个假名的例子:

    library(shiny)
    server<-function(input, output,session) {
      observe({
        if(input$selectall == 0) return(NULL)
        else if (input$selectall > 0)
        {
          variables<-list("Cylinders" = "cyl","Transmission" = "am","Gears" = "gear")
          updateCheckboxGroupInput(session,"variable","Variable:",choices=variables,selected=unlist(variables))
        }
      })
    }
    
    ui <- shinyUI(fluidPage(        
        checkboxGroupInput("variable", "Variable:",list("Cylinders" = "cyl","Transmission" = "am","Gears" = "gear")),
        actionButton("selectall", "Select All")
    ))
    shinyApp(ui = ui, server = server)
    

    【讨论】:

    • 添加一个取消全选按钮以获得完整的解决方案
    • 使用observeEvent代替observe
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多