library(shiny)

ui <- fluidPage(
  shiny::titlePanel("Hurricane Maps"),
  sidebarLayout(
    sidebarPanel(shiny::selectInput('names', 'Choosing something:', choices=c('A', 'B', 'C'),
                 shiny::sliderInput("duration", "Range of Storm:", min = should_vary,
                                    max =  should_vary, value = c( should_vary, should_vary)
                                    ))
  )
)
server <- function(input, output) {

}
shinyApp(ui = ui, server = server)

Lo anterior es el código.

Necesito el "deberes deberes" para variar según se seleccionó si A, B o C se seleccionaron.

1
unathletic_coder 27 jun. 2019 a las 08:17

1 respuesta

La mejor respuesta

Tienes que:

  1. Use renderUI dentro de la parte brillante del servidor para crear programáticamente Objeto ui
  2. Este objeto debe depender de la ID names (es decir, tiene que hacer reactivo input$names)
  3. En la parte de la interfaz de usuario tiene que insertar objeto rendido con uiOutput

Código:

library(shiny)

ui <- fluidPage(
  selectInput("names", "Choosing something:", c("A", "B", "C"), "A"),
  uiOutput("duration_rendered")
)

server <- function(input, output) {

  input_names <- reactive({
    switch(input$names, "A" = 1, "B" = 2, "C" = 3)
  })

  output$duration_rendered <- renderUI({
    sliderInput(
      "duration",
      "Range of Storm:",
      min = input_names(),
      max =  input_names() + 10,
      value = c(input_names(), input_names() + 10)
    )
  })

}
shinyApp(ui, server)
1
pogibas 27 jun. 2019 a las 05:34