09_uploadは、ファイルをアップロードして表示する例です。CSVファイルをアップロードして、ヘッダやセパレータを指定すると、表として出力します。
「09_upload」の実行
library(shiny) runExample("09_upload")
server.R
library(shiny) function(input, output) { output$contents <- renderTable({ # input$file1は、初期状態ではNULL # ユーザがアップロードするファイルを選んでから、'name', 'size', 'type', # 'datapath'を含むデータフレームになる。 # 'datapath'は、カレントディレクトリから参照できるローカルなファイル名 inFile <- input$file1 if (is.null(inFile)) return(NULL) read.csv(inFile$datapath, header=input$header, sep=input$sep, quote=input$quote) }) }
Code license:MIT
input$file1
は初期状態ではNULLなので、if文でNULLチェックinput$file1
にファイルが指定されたとき、inFileにファイルのデータフレームが代入されるinFileのデータフレームでは、
inFile$datapath
でファイルへのパスが参照されるread.csv()
で、header, sep, quoteで指定されたヘッダやセパレータでcsvファイルを開く
ui.R
library(shiny) fluidPage( titlePanel("Uploading Files"), sidebarLayout( sidebarPanel( fileInput('file1', 'Choose CSV File', accept=c('text/csv', 'text/comma-separated-values,text/plain', '.csv')), tags$hr(), checkboxInput('header', 'Header', TRUE), radioButtons('sep', 'Separator', c(Comma=',', Semicolon=';', Tab='\t'), ','), radioButtons('quote', 'Quote', c(None='', 'Double Quote'='"', 'Single Quote'="'"), '"') ), mainPanel( tableOutput('contents') ) ) )
Code license:MIT
サイドバーに、ファイルアップロードの
fileInput()
、チェックボックスcheckBoxInput()
、ラジオボタンradioButtons()
を配置fileInputの引数acceptでMIME(Multipurpose Internet Mail Extension)タイプを指定する。
'text/csv', 'text/comma-separated-values,text/plain', '.csv'
は、コンマで区切られたcsvファイルを指定しているtags
は、HTMLで指定したタグを挿入する関数