0

最初のフレックスダッシュボードをまとめようとしています。(使用しているデータの概要はこちらをご覧ください)

ダッシュボードで、各施設の集計データを表示するか、個々の医薬品に分割して表示できるようにしたいと考えています。

私がこれまでに持っているコードは次のとおりです。

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
})
```

これは問題なく機能します。病院のドロップダウンがあり、スライダーを使用して日付範囲を選択できます。

私がやりたいのは、2 つの異なるドロップダウンを追加することです。グラフのタイプを選択するもの(合計使用量、個々の薬物、薬物のクラス)

私がこれをやろうとした方法は次のとおりです。

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"

これはサイドバーでうまく機能します。"By Agent" を選択すると、次のリスト ボックスが表示され、薬物の選択肢が表示され、薬物を選択できます。

しかし、グラフ パネルの出力を変更するにはどうすればよいでしょうか。

ユースケースごとに ggplot 呼び出しを少し変更する必要があります。ドロップダウンの結果に応じて異なるプロットをレンダリングする方法はありますか?

私は使用してみました:

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

ただし、これにより、サイドバーの設定に関係なく、どちらのプロットも表示されません (2 つの renderPlot 呼び出しを個別に使用すると機能することを確認しました)。

前もって感謝します。

4

1 に答える 1