2012-11-09 19 views
5

Ho giocato con R lucido e ho una domanda.R condizionale lucido dichiarazioni condizionali

Desidero creare un pacchetto multi-scheda multi-set di dati. Poiché i diversi set di dati non sono eccessivamente correlati, desidero che l'utente sia in grado di selezionare quali desiderano esaminare e modificare ciò che le opzioni di filtro sono disponibili affinché possano essere utilizzati.

quindi voglio qualcosa di simile,

selectInput("variable", "Variable:", 
list(""Cylinders" = "cyl", 
"Transmission" = "am"), 

if (selectInput == "Transmission") { 
    sliderInput("integer", "Integer:", 
    min=0, max=1, value=0) }, 

else{ 

sliderInput("decimal", "Decimal:", 
      min = 0, max = 1, value = 1) } 

Come faccio a fare un condizionale in Shiny? Trattarlo come un normale R condizionale non sembra funzionare.

+3

+1 solo per indicarmi R lucido :-) – January

+0

lol. Sembra molto bello. Sono sicuro che sarà una volta fuori beta. – cianius

risposta

10

conditionalPanel è ciò che desideri. http://rstudio.github.com/shiny/tutorial/#dynamic-ui

selectInput("variable", "Variable:", 
list(""Cylinders" = "cyl", 
"Transmission" = "am"), 

conditionalPanel(condition = "input.variable == 'am'", 
    sliderInput("integer", "Integer:", 
    min=0, max=1, value=0)), 

conditionalPanel(condition = "input.variable == 'cyl'", 
sliderInput("decimal", "Decimal:", 
      min = 0, max = 1, value = 1)) 

(non ho davvero cercato di eseguire questo codice, ma si dovrebbe essere in grado di ottenere l'idea)

Nota che conditionalPanel appena nasconde il controllo, il controllo figlio esiste ancora se si sta mostrando o no. Nella logica del server, sarà necessario utilizzare if (input$variable == 'am') per vedere in che modalità si trova (che è probabilmente il modo naturale in ogni caso) anziché provare l'esistenza di input$integer o input$decimal.

+0

Fantastico. L'ID ha provato a utilizzare il condizionale, ma utilizzava chiaramente il formato sbagliato. Grazie mille! – cianius