Создание вспомогательных функций
В shinydashboard можно добавить множество различных элементов. Чтобы обеспечить взаимодействие между вводом пользователя и выводом дашборда, необходимо описать эти взаимодействия внутри функций render, которые размещаются в блоке server.
Код может быстро стать громоздким, если взаимодействий и выходных элементов много. Один из способов решить эту проблему — создать собственные вспомогательные функции вне среды shinydashboard.
В этом упражнении вы построите две вспомогательные функции:
num_listings(): возвращает количество объявлений на основе отфильтрованных данных в заданном диапазоне ценprice.make_plots(): создаёт либо ящичковые диаграммы, либо скрипичные диаграммы в зависимости от выбора пользователя и отфильтрованных данных в диапазоне ценprice.
Набор данных listings уже загружен, пакеты sf, tidyverse и leaflet подключены.
Это упражнение является частью курса
Создание дашбордов с помощью shinydashboard
Инструкции к упражнению
- Отфильтруйте
listingsтак, чтобы данные находились в пределах между левым и правым значениями аргументаrange— заполнителя для входных данных shinyApp. - Задайте правильные условия 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()
}}