ヘルパー関数を作成する
shinydashboard には多くの要素を追加できます。ユーザー入力とダッシュボードの出力を連動させるには、サーバー側に置く render 関数の中でそのやり取りを定義する必要があります。
やり取りや出力が増えると、コードはすぐに扱いにくくなります。この問題を回避する1つの方法は、shinydashboard の外で独自のヘルパー関数を作成することです。
以下では、2つのヘルパー関数を作成します。
num_listings():priceの範囲でフィルタしたデータに基づいて、掲載件数(listings の数)を返します。make_plots(): ユーザーの選択に応じて箱ひげ図またはバイオリンプロットを作成し、priceの範囲でフィルタしたデータに基づいて描画します。
listings は読み込まれており、sf、tidyverse、leaflet はインポート済みです。
この演習はコースの一部です
shinydashboard で作るダッシュボード
演習の手順
listingsをフィルタして、shinyApp の入力を想定した引数rangeの左端と右端の境界のあいだに制限してください。- 適切な if-else 条件を設定し、
choiceが"Box plots"に一致する場合は箱ひげ図、"Violin plots"の場合はバイオリンプロットが描画されるようにしてください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
num_listings <- function(range){
# Filter listings appropriately
filter(listings, price >= ___, price <= ___) %>% nrow()
}
make_plots <- function(range, choice){
filtered_listings <- filter(listings, price >= range[1], price <= range[2])
# Set the correct if-else conditions
if (choice == ___){
filtered_listings %>%
ggplot(aes(y = price, x = room_type)) + geom_boxplot() + theme_classic()
}
else if (___){
filtered_listings %>%
ggplot(aes(y = price, x = room_type)) + geom_violin() + theme_classic()
}}