开始使用免费开始使用

添加交互式表格输出

有多个 htmlwidgets 包,如 DTleafletplotly 等,能够提供高度交互的输出,并且可以用几乎相同的模式轻松集成到 Shiny 应用中。例如,您可以使用 DT 包将 Shiny 应用中的静态表格变成交互式表格:

  1. 使用 DT::datatable() 创建交互式表格。
  2. DT::renderDT() 进行渲染。
  3. 通过 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)
编辑并运行代码