2016-05-30 16 views
0

Ich versuche mein erstes Flexdashboard zusammenzustellen. (Siehe here für eine Übersicht über die Daten, die ich verwende)Je nach Eingang unterschiedliche Ausgabe an reaktiven Frame übergeben

Ich möchte, dass das Dashboard in der Lage ist, entweder aggregierte Daten für jede Einrichtung zu präsentieren oder sie für einzelne Medikamente aufzubrechen.

Der Code, den ich bisher habe, ist:

Inputs {.sidebar} 
----------------------------------------------------------------------- 
```{r} 
selectInput("hosp", 
     label = h4("Select hospital:"), 
     choices = list("Hospital 1" = "hosp1", 
         "Hospital 2" = "hosp2"), selected = "hosp1") 

sliderInput("dates", 
     label = h4("Select dates:"), 
     min = as.Date("2006-01-01"), max = as.Date("2015-12-01"), 
     value = c(as.Date("2006-01-01"), as.Date("2015-12-01")), 
     timeFormat = "%b-%Y") 

```` 

Row 
----------------------------------------------------------------------- 
### Usage Graph 
```{r} 
renderPlot({ 
    p <- ggplot(data = summarise(group_by(filter(usage, 
         hospital == input$hosp, date > as.Date(input$dates[1]) 
         & date < as.Date(input$dates[2])), date), 
         total = round(sum(usage))), aes(x = date, y = total)) 
    + geom_line() 

p 
}) 
``` 

Dies funktioniert gut - ich einen Drop-Down für das Krankenhaus und kann einen Datumsbereich mit dem Schieberegler wählen.

Was ich tun möchte, ist zwei verschiedene Dropdown-Menüs hinzufügen; man den Diagrammtyp zu wählen (Gesamtverbrauch, einzelne Droge, Klasse von Medikamenten)

Wie ich versucht habe, dies zu tun ist:

selectInput("gtype", 
     label = h4("Select graph type:"), 
     choices = list("Total Use" = "abxa", 
         "By Class" = "abxc", 
         "By Agent" = "abxd"), selected = "abxa") 

conditionalPanel("input.gtype == 'abxd'", 
      selectInput("abagent", 
         label = h4("Select Agent:"), 
         choices = list("Amoxycillin" = "amoxycillin", 
             "Co-amoxyclav" = "amoxicillin-clavulanate", 
             "Cephazolin" = "cefazolin", 
             "Gentamicin" = "gentamicin"), selected = "cefazolin" 

Das funktioniert gut in der Sidebar - Auswahl von „By Agenten "öffnet die nächste Liste mit der Auswahl an Drogen und lässt mich eins auswählen.

Aber wie ändert sich die Ausgabe in der Grafikanzeige?

Ich muss den ggplot Anruf für jeden Anwendungsfall leicht ändern; Gibt es eine Möglichkeit, abhängig von den Ergebnissen des Dropdown-Menüs eine andere Darstellung zu erstellen?

Ich habe versucht mit:

conditionalPanel("input.type" == "abxa", 
    renderPlot({ plot 1 call }) 
) 
conditionalPanel("input.type" == "abxd", 
    renderPlot({ plot 2 call }) 
) 

dies führt jedoch in keinem der beiden Plot erscheinen, unabhängig von den Einstellungen Sidebar (Ich habe bestätigt, dass die beiden renderPlot Anrufe funktionieren, wenn man sie einzeln verwenden)

Danke im Voraus.

Antwort

0

Statt eine bedingte Tafel für jede Handlung zu tun, machen Sie einfach Ihre Schecks in der renderplot Funktion:

renderPlot({ 
    if(input$gtype=='abxa'){ 
    plot 1 call 
    }else if(input$gtype=='abxd'){ 
    plot 2 call 
    } 
})