データシステム演習(スライド資料3回)

【概要】Shinyを用いたWeb情報システムの演習資料である。Shinyのギャラリー、仕組み、ウィジェットについて、動画資料とサンプルコードを通じて学習する。ui.RとサーバサイドのようなRによるWebアプリケーション開発の基礎を扱う。

【目次】

  1. Shiny のギャラリー
  2. Shiny の仕組み
  3. Shiny のウィジェット

1. Shiny のギャラリー

YouTube 動画: https://www.youtube.com/watch?v=POOORv2BFCM

資料: Shiny のギャラリー [PDF], [パワーポイント]

URL: https://shiny.rstudio.com/gallery/

Shiny の機能

2. Shiny の仕組み

YouTube 動画: https://www.youtube.com/watch?v=-Qb2LNNovZY

資料: Shiny の仕組み [PDF], [パワーポイント]

Shiny の機能

R システムの標準オブジェクト

shiny のインストール

install.packages("shiny")

shiny を動かしてみる

  1. 次の2つのファイルを作成する。

    ファイル名はこの通りにすること。2つのファイルは、同じディレクトリ(フォルダ)に置くこと。

    ui.R

    library(shiny)
    
    shinyUI(fluidPage(
      sidebarLayout(
          sidebarPanel(
                sliderInput("breaks",
                            "please select a number:",
                            min = 1,
                            max = 50,
                            value = 30)
        ),
    
        mainPanel(
          plotOutput("distPlot")
        )
      )
    ))
    

    server.R

    library(shiny)
    
    shinyServer(function(input, output) {
      output$distPlot <- renderPlot({
        hist(faithful[,2], breaks = input$breaks)
      })
    })
    
  2. ui.R、server.Rのディレクトリ名(フォルダ名)を確認する。
  3. R システムのコンソールで、次のように操作する。「C:/Users/user」の部分は、実際にui.R、server.Rがあるディレクトリに読み替える。
    library(shiny)
    runApp("C:/Users/user")
    

3. Shiny のウィジェット

YouTube 動画: https://www.youtube.com/watch?v=qA-BVSfzbYQ

資料: Shiny のウィジェット [PDF], [パワーポイント]

library(shiny)

shinyUI(fluidPage(
  sidebarLayout(
      sidebarPanel(
            sliderInput("breaks",
                        "please select a number:",
                        min = 1,
                        max = 50,
                        value = 30)
    ),

    mainPanel(
      textOutput("distPrint")
    )
  )
))
library(shiny)

shinyServer(function(input, output) {
  output$distPrint <- renderText({
    input$breaks * 12
  })
})
library(shiny)

shinyUI(fluidPage(
  sidebarLayout(
          sidebarPanel (
            numericInput("breaks",
                        "value = ?", value=0)

    ),

    mainPanel(
      textOutput("distPrint")
    )
  )
))