Thêm đầu ra bảng tương tác
Có nhiều gói htmlwidgets như DT, leaflet, plotly, v.v. cung cấp các đầu ra tương tác cao và có thể tích hợp dễ dàng vào ứng dụng Shiny theo một mẫu gần như giống nhau. Ví dụ, bạn có thể biến một bảng tĩnh trong ứng dụng Shiny thành bảng tương tác bằng gói DT:
- Tạo bảng tương tác bằng
DT::datatable(). - Kết xuất bằng
DT::renderDT(). - Hiển thị bằng
DT::DTOutput().
Trong bài tập này, bạn sẽ cập nhật ứng dụng đã tạo trước đó, thay thế bảng tĩnh bằng bảng tương tác.
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
- Tạo đầu ra bảng tương tác bằng
DTvới 10 tên phổ biến nhất theo giới tính và năm. Bạn có thể dùng hàmtop_10_names()để tạo một data frame để hiển thị và truyền nó vàoDT::datatable(). - Hiển thị bảng trong UI.
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("What's in a Name?"),
# Add select input named "sex" to choose between "M" and "F"
selectInput('sex', 'Select Sex', choices = c("M", "F")),
# Add slider input named "year" to select year between 1900 and 2010
sliderInput('year', 'Select Year', min = 1900, max = 2010, value = 1900),
# MODIFY CODE BELOW: Add a DT output named "table_top_10_names"
tableOutput('table_top_10_names')
)
server <- function(input, output, session){
top_10_names <- function(){
babynames %>%
filter(sex == input$sex) %>%
filter(year == input$year) %>%
slice_max(prop, n = 10)
}
# MODIFY CODE BELOW: Render a DT output named "table_top_10_names"
output$table_top_10_names <- renderTable({
top_10_names()
})
}
shinyApp(ui = ui, server = server)