0

我正在尝试组合我的第一个 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 调用有效)

提前致谢。

4

1 回答 1

0

无需为每个绘图做一个条件面板,只需在 renderplot 函数中进行检查:

renderPlot({ 
  if(input$gtype=='abxa'){
    plot 1 call 
  }else if(input$gtype=='abxd'){
    plot 2 call
  }
})
于 2017-05-11T21:10:14.073 回答