ふんわり R-tips

ぜんぜんわからない、俺たちは雰囲気でRをやっている

Shinyサンプルアプリケーション「10_download」の説明

10_downloadは、データセットを選択と、そのデータをダウンロードするDownloadボタンの使用例です。mainPanelには、選択したCSVファイルの中身を表示します。

「10_download」の実行

library(shiny)
runExample("10_download")

f:id:phmpk:20161230161042p:plain

server.R

function(input, output) {
  datasetInput <- reactive({
    switch(input$dataset,
           "rock" = rock,
           "pressure" = pressure,
           "cars" = cars)
  })
  
  output$table <- renderTable({
    datasetInput()
  })
  
  output$downloadData <- downloadHandler(
    filename = function() { 
         paste(input$dataset, '.csv', sep='') 
     },
    content = function(file) {
      write.csv(datasetInput(), file)
    }
  )
}

Code license:MIT

  • datasetInputに、reactiveにinput$datasetで入力された'rock', 'pressure', 'cars'を指定

  • output$tableに、datasetInput()で指定したデータを表として出力

  • dounloadHandler()でファイル名と、ファイルに格納するデータを指定し、output$downloadDataへ渡して出力

ui.R

fluidPage(
  titlePanel('Downloading Data'),
  sidebarLayout(
    sidebarPanel(
      selectInput("dataset", "Choose a dataset:", 
                  choices = c("rock", "pressure", "cars")),
      downloadButton('downloadData', 'Download')
    ),
    mainPanel(
      tableOutput('table')
    )
  )
)

Code license:MIT

  • サイドバーに、'rock', 'pressure', 'cars'いずれかのデータの種類を選択するリストと、downloadButtonを配置

  • mainPaneloutput&tableで指定した表を出力