首页 > 解决方案 > 单击复选框时更改滑块输入值

问题描述

我有三个带有标签年份、长度、计数的滑块。我想添加一个“查看全部”复选框,单击该复选框时,会将滑块输入分别更改为每个滑块的最小值和最大值。

这是我尝试过的代码,我不确定如何更改所有三个滑块,以及我是否一开始就做对了?

observeEvent(input$checkbox==TRUE,
  updateSliderInput(session = session, inputId = "years", min = 1979, max = 2015))

另外,我不确定未单击复选框时如何处理。最好使用复选框来更新三个滑块?

标签: rshiny

解决方案


当用户标记复选框时,下面的应用程序将范围滑块的值设置为最大范围。当用户取消选中复选框时,范围滑块的值将设置为之前的值。概括为三个滑块没有困难,只需重复相同的代码即可。

library(shiny)

slider1_min <- 0
slider1_max <- 50
slider1_init <- c(20,30)

ui <- fluidPage(

   sidebarLayout(
      sidebarPanel(
         sliderInput("slider1",
                     "Range:",
                     min = slider1_min,
                     max = slider1_max,
                     value = slider1_init),
         checkboxInput("checkbox", "Set to full range")
      ),

      mainPanel()
   )
)

server <- function(input, output, session) {

  slider1_values <- reactiveVal(slider1_init)

  observe({
    if(input$checkbox){
      slider1_values(isolate(input$slider1))
      updateSliderInput(session, "slider1", value=c(slider1_min, slider1_max))
    }else{
      updateSliderInput(session, "slider1", value=slider1_values())
    }
  })

}

# Run the application 
shinyApp(ui = ui, server = server)

推荐阅读