2017-07-25 1 views
0

J'ai un problème avec le panneau conditionnel. Je voudrais montrer dans le sidebarPanel soit DateRange OU SliderInput selon le choix choisi dans le RadioButton, qui est également dans le sidebarPanel.Le panneau conditionnel brillant ne se met pas à jour

Si vous essayez d'exécuter l'exemple ci-dessous, il échouera avec message d'erreur suivant:

Erreur: argument formel « condition » assortie par plusieurs réels arguments

Si vous commentez tout des deux conditions, vous pouvez voir que la variable example a la valeur a ou b en fonction des options choisies.

Je suis presque sûr de manquer quelque chose, mais je n'arrive pas à comprendre quoi. J'ai regardé autour de moi et je n'ai rien trouvé d'utile.

library(shiny) 

# Server --------------------------------------------- 

server = shinyServer(function(input, output){ 
    output$debug <- renderPrint({ 
    input$example 
    }) 
}) 


# Ui ------------------------------------------------- 

ui = { 
    fluidPage(
    sidebarPanel(
     radioButtons('example', 'Select Examples: ', choices = c('a', 'b'), selected = 'a'), 
     conditionalPanel(
     condition = "input.example == 'a'", 
     dateRangeInput('date', 'Select Date Range:', 
         start = Sys.Date() - 7, 
         end = Sys.Date(), 
         min = '2012-04-01', 
         max = Sys.Date() 
         ) 
     , 
     condition = "input.example == 'b'", 
     sliderInput('date', 'Slide Date Range:', min = 1, max = 90, value = 14, step = 1) 
     ) 
    ), 
    mainPanel(verbatimTextOutput("debug") 
    ) 
)} 


# App ------------------------------------------------ 

shinyApp(ui = ui, server = server) 

Merci

Répondre

0

Vous devez spécifier deux objets conditionalPanel, une pour chaque condition.

library(shiny) 

# Server --------------------------------------------- 

server = shinyServer(function(input, output){ 
    output$debug <- renderPrint({ 
    input$example 
    }) 
}) 


# Ui ------------------------------------------------- 

ui = { 
    fluidPage(
    sidebarPanel(
     radioButtons('example', 'Select Examples: ', choices = c('a', 'b'), 
      selected = 'a'), 
    conditionalPanel(
     condition = "input.example == 'a'", 
     dateRangeInput('date', 'Select Date Range:', 
        start = Sys.Date() - 7, 
        end = Sys.Date(), 
        min = '2012-04-01', 
        max = Sys.Date() 
    ) 
), 
    conditionalPanel(
    condition = "input.example = 'b'", 
    sliderInput('date', 'Slide Date Range:', min = 1, max = 90, value = 14, 
      step = 1) 
) 
), 
mainPanel(verbatimTextOutput("debug") 
) 
)} 


# App ------------------------------------------------ 

shinyApp(ui = ui, server = server)