添加交互式表格输出
有多个 htmlwidgets 包,如 DT、leaflet、plotly 等,能够提供高度交互的输出,并且可以用几乎相同的模式轻松集成到 Shiny 应用中。例如,您可以使用 DT 包将 Shiny 应用中的静态表格变成交互式表格:
- 使用
DT::datatable()创建交互式表格。 - 用
DT::renderDT()进行渲染。 - 通过
DT::DTOutput()进行显示。
在本练习中,您将更新之前创建的应用,把静态表格替换为交互式表格。
本练习是课程的一部分
使用 R 构建 Shiny Web 应用
练习说明
- 使用
DT创建一个交互式表格输出,展示按性别和年份划分的前 10 个最流行的名字。您可以使用函数top_10_names()生成要显示的数据框,并将其传递给DT::datatable()。 - 在 UI 中显示该表格。
交互式实操练习
通过完成这段示例代码来试试这个练习。
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)