読者です 読者をやめる 読者になる 読者になる

ふんわり R-tips

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

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

02_textは、データセット選択と表示するデータ数を入力として、選択されたデータセットのsummaryと入力されたデータ数のデータセットをHTMLで表として出力する例となっています。

「02_text」の実行

library(shiny)
runExample("02_text")

f:id:phmpk:20161230152939p:plain

server.R

library(shiny)
library(datasets)

# 選択されたデータセットの合計と全体を表示するためのサーバ側を定義
function(input, output) {
  
  # 選択されたデータセットを返す
  datasetInput <- reactive({
    switch(input$dataset,
           "rock" = rock,
           "pressure" = pressure,
           "cars" = cars)
  })
  
  # データセットのsummaryを計算
  output$summary <- renderPrint({
    dataset <- datasetInput()
    summary(dataset)
  })
  
  # 最初のn個のデータを表示するテーブル
  output$view <- renderTable({
    head(datasetInput(), n = input$obs)
  })
}

Code license:MIT

  • input$dataset, input$obsを入力として、出力output$summary, output$viewを描画

  • datasetInputに、"rock","pressure","cars"のいずれかの文字列に対応したinput$datasetの値を動的に代入

  • summary(dataset)でdatasetの最小・最大・平均などを計算してrenderPrint()で文字列として出力

  • input$obsで指定したn個のデータをrendrTable()で表として描画

ui.R

library(shiny)

# データセットを表示するUIを定義
fluidPage(
  
  # タイトル
  titlePanel("Shiny Text"),
  
  # サイドバーに、データセット選択と表示するデータ数を
  # 決定するコントロールを配置
  sidebarLayout(
    sidebarPanel(
      selectInput("dataset", "Choose a dataset:", 
                  choices = c("rock", "pressure", "cars")),
      
      numericInput("obs", "Number of observations to view:", 10)
    ),
    
    # データセットのsummaryとHTMLテーブルを表示
    mainPanel(
      verbatimTextOutput("summary"),
      
      tableOutput("view")
    )
  )
)

Code license:MIT

  • selectInput()でプルダウンメニューを配置。選択した文字列はdatasetに格納される。

  • numericInput()で整数値入力を配置。選択した整数値はobsに格納される。

  • verbatimTextOutput()で、summaryで指定された文字列をそのまま出力

  • tableOutput()で、viewで指定された表をHTML出力