始める無料で始める

インタラクティブな表の出力を追加する

DTleafletplotly などの htmlwidgets パッケージは、高度にインタラクティブな出力を提供し、ほぼ同じパターンで Shiny アプリに簡単に統合できます。たとえば、Shiny アプリ内の静的な表を、DT パッケージを使ってインタラクティブな表に変えることができます。

  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)
コードを編集して実行