我正在尝试整理我的第一个flexdashboard。 (有关我正在使用的数据的大纲,请参阅here)
我希望仪表板能够为每个设施提供汇总数据,或者将其分解为单个药物。
我到目前为止的代码是:
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调用都会起作用)
提前致谢。
答案 0 :(得分:0)
不要为每个绘图做一个条件面板,只需在renderplot函数中进行检查:
renderPlot({
if(input$gtype=='abxa'){
plot 1 call
}else if(input$gtype=='abxd'){
plot 2 call
}
})