Khám phá ẩm thực: nguyên liệu nổi bật
Ẩm thực có sức hút phổ quát, và vô vàn món ăn có thể sáng tạo từ muôn vàn nguyên liệu tạo nên sự đa dạng gần như vô hạn! Trong bài tập này, bạn sẽ dùng bộ dữ liệu recipes chứa công thức, loại ẩm thực của món, và các nguyên liệu sử dụng để xây dựng một ứng dụng Shiny cho phép người dùng khám phá những nguyên liệu được dùng nhiều nhất theo từng ẩm thực.
Ứng dụng cuối cùng của bạn sẽ giống như hình trong ảnh chụp màn hình này.

Chúng tôi đã nạp sẵn các gói shiny và dplyr, cũng như bộ dữ liệu recipes. Ngoài ra, dưới đây là một đoạn mã tiện lợi lấy top 10 nguyên liệu được dùng trong ẩm thực Hy Lạp. Bạn sẽ thấy hữu ích để tạo bảng dữ liệu tương tác trong ứng dụng dựa trên ẩm thực và số lượng nguyên liệu do người dùng chọn.
recipes %>%
filter(cuisine == 'greek') %>%
count(ingredient, name = 'nb_recipes') %>%
arrange(desc(nb_recipes)) %>%
head(10)
Bài tập này là một phần của khóa học
Xây dựng ứng dụng web với Shiny trong R
Hướng dẫn bài tập
- UI:
- Thêm một input trong sidebar tên
cuisineđể cho phép người dùng chọn một ẩm thực từ toàn bộ danh sách ẩm thực có trong bộ dữ liệurecipes. - Thêm một slider input tên
nb_ingredientstrong sidebar để cho phép người dùng chọn số lượng nguyên liệu cần hiển thị. - Thêm một đầu ra bảng dữ liệu tương tác trong main panel tên
dt_top_ingredients.
- Thêm một input trong sidebar tên
- Server:
- Lọc
recipesdựa trên ẩm thực đã chọn và số lượng nguyên liệu đứng đầu cần hiển thị. - Kết xuất dữ liệu đã lọc dưới dạng một bảng dữ liệu tương tác.
- Gán nó vào đối tượng output tên
dt_top_ingredients.
- Lọc
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
ui <- fluidPage(
titlePanel('Explore Cuisines'),
sidebarLayout(
sidebarPanel(
# CODE BELOW: Add an input named "cuisine" to select a cuisine
# CODE BELOW: Add an input named "nb_ingredients" to select # of ingredients
),
mainPanel(
# CODE BELOW: Add a DT output named "dt_top_ingredients"
)
)
)
server <- function(input, output, session) {
# CODE BELOW: Render the top ingredients in a chosen cuisine as
# an interactive data table and assign it to output object `dt_top_ingredients`
}
shinyApp(ui, server)