单击复选框时更改滑块输入值

时间:2018-08-03 10:06:20

标签: r shiny

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

这是我尝试过的代码,我不确定如何更改所有三个滑块,以及我是否一开始就正确执行此操作?

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

此外,我不确定在取消选中复选框后如何处理。最好是使用复选框更新三个滑块?

1 个答案:

答案 0 :(得分:1)

下面的应用程序在用户选中复选框时将范围滑块的值设置为最大范围。而且,当用户取消选中该复选框时,范围滑块的值将设置为其先前的值。归纳为三个滑块没有困难,只需重复相同的代码即可。

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)