Я пытаюсь собрать свою первую flexdashboard. (См. здесь описание данных, которые я использую)
Я бы хотел, чтобы на приборной панели можно было представить либо совокупные данные по каждому учреждению, либо разбить их на отдельные препараты.
Код, который у меня есть до сих пор:
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
})
```
Это отлично работает — у меня есть раскрывающийся список для больницы, и я могу выбрать диапазон дат с помощью ползунка.
Я хотел бы добавить два разных раскрывающихся списка; один для выбора типа графика (общее использование, отдельный препарат, класс препаратов)
Как я пытался это сделать:
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"
Это хорошо работает на боковой панели — при выборе «По агенту» открывается следующий список с выбором наркотиков, и я могу выбрать один.
Но как изменить вывод на панели графика?
Мне нужно немного изменить вызов ggplot для каждого варианта использования; есть ли способ отрисовки другого графика в зависимости от результатов раскрывающегося списка?
Я пробовал использовать:
conditionalPanel("input.type" == "abxa",
renderPlot({ plot 1 call })
)
conditionalPanel("input.type" == "abxd",
renderPlot({ plot 2 call })
)
но это приводит к тому, что ни один график не появляется независимо от настроек боковой панели (я подтвердил, что два вызова renderPlot работают, если вы используете их по отдельности)
Заранее спасибо.