交互式/反应性更改sliderInput的最小值/最大值

时间:2013-09-09 14:29:07

标签: r shiny

我发现了some information有关如何在value内更改sliderInput siderbarPanel的{​​{1}}动态表达式。但是,我希望使用value更改滑块的minmax,而不是numericInput。在server.R的{​​{3}}脚本中,它表示只能为滑块更改labelvalue。是否还有其他可能使用反应式表达式更改sliderInput的最小值/最大值?

这是一个例子:

ui.R:

shinyUI(pageWithSidebar(

  #Sidebar with controls to select the variable to plot
  sidebarPanel(


 #Numeric Inputs
    numericInput("min_val", "Enter Minimum Value", 1993),

    numericInput("max_val", "Enter Maximum Value", 2013),



#Slider 
    sliderInput("inSlider", "Slider", 
                min=1993, max=2013, value=2000),

# Now I would like to change min and max from sliderInput by changing the numericInput.

mainPanel()
))

server.R:

library(shiny)

shinyServer(function(input, output, session) {

reactive({

x<-input$min_val

y<-input$max_val


updateSliderInput(session, "inSlider", min=x, max=y, value=x)

})

1 个答案:

答案 0 :(得分:12)

我认为最好通过renderUI()uiOutput()使用闪亮的动态UI功能来实现。试试下面的例子:

ui.R

library(shiny)

shinyUI(pageWithSidebar(
  headerPanel("Test Shiny App"),

  sidebarPanel(
    #Numeric Inputs
    numericInput("min_val", "Enter Minimum Value", 1993),
    numericInput("max_val", "Enter Maximum Value", 2013),
    #display dynamic UI
    uiOutput("slider")
  ),

  mainPanel()
))

server.R

library(shiny)

shinyServer(function(input, output, session) {

  #make dynamic slider
  output$slider <- renderUI({
    sliderInput("inSlider", "Slider", min=input$min_val, max=input$max_val, value=2000)
  })

})