Lecture 8: Shiny (その2)

shinyで実装

shinyのロード

library(shiny)

uiコントローラーの動的制御

server.R内に記述

output$controlXmax <- renderUI({
    name <- input$univName
    freq <- sort(univ[, colnames(univ) == name], decreasing = TRUE)
    freq <- freq[freq > 0]
    sliderInput(inputId = "xmax", label = "Scale size: ", min = 10, max = length(freq), 
        value = 10, step = 10)
})

ui.R

  uiOutput("controlXmax"),

ui.Rの表示の制御

チエックボックスがONの状態のときに表示

  conditionalPanel(condition = "input.Zipf == true",uiOutput("controlK")),

パネルの追加(ui.R)

mainPanel(tabsetPanel(tabPanel("Frequency Distribution", plotOutput("freqDist")), 
    tabPanel("Frequency Barplot", plotOutput("freqBar"))))

棒グラフの描画(ui.R)

output$freqBar <- renderPlot({

    name <- input$univName
    tmp <- univ[univ[, colnames(univ) == name] > 0, ]
    tmp <- tmp[order(tmp[, colnames(univ) == name], decreasing = TRUE), ]

    title = "Word Frequency Barplot"
    xlabel = "Word"
    ylabel = "Frequency"

    barplot(tmp[, colnames(tmp) == name], names = rownames(tmp), las = 3, xlim = c(input$range[1], 
        input$range[2]))

})

Barplotとの描画範囲を動的制御

output$barXControls <- renderUI({
    name <- input$univName
    tmp <- univ[univ[, colnames(univ) == name] > 0, ]
    tmp <- tmp[order(tmp[, colnames(univ) == name], decreasing = TRUE), ]
    vmax <- nrow(tmp)
    sliderInput("range", "Barplot: Xaxis Range", min = 1, max = vmax, value = c(1, 
        vmax), step = 1)
})