Inputs and outputs

Case Studies: Building Web Applications with Shiny in R

Dean Attali

Shiny Consultant

Inputs

Case Studies: Building Web Applications with Shiny in R

Inputs

chapter1_2_inputs_and_outputs.005.png

Case Studies: Building Web Applications with Shiny in R

Inputs

chapter1_2_inputs_and_outputs.006.png

Case Studies: Building Web Applications with Shiny in R

Building inputs

ui <- fluidPage(
    textInput(inputId = "name", label = "Enter your name",
              value = "Dean"),
    numericInput(inputId = "sibs", label = "How many siblings?",
                 value = 4, min = 0)
)
  • Input functions: *Input(inputId, label, ...)
  • inputId = Unique ID
  • label = Text to describe input
  • ... = Additional input-specific parameters
Case Studies: Building Web Applications with Shiny in R

Outputs

  • Plots, tables, text - anything R creates & users see
  • Two steps:

    1. Create placeholder for output (in UI)

      ui <- fluidPage(
       "Plot goes here:",
       plotOutput(outputId = "my_plot")
      )
      
    2. Write R code to generate output (in server)

Case Studies: Building Web Applications with Shiny in R

The server

server <- function(input, output) {

  # Code for building outputs

}
  • input
    • Read values from here (inputs user modifies)
  • output
    • Write values to here (outputs e.g. plots, tables)
Case Studies: Building Web Applications with Shiny in R

Building outputs

ui <- fluidPage(
    numericInput("num", "Number of rows", value = 10, min = 0),
    tableOutput("my_table")
)

server <- function(input, output) { output$my_table <- renderTable({ head(iris, n = input$num) }) }
  • 3 Rules to build output object:
    1. Build object inside render function (renderPlot(), renderText(), etc)
    2. Save object to output$<outputId>
    3. Use input$<inputId> to access value of input
Case Studies: Building Web Applications with Shiny in R

Let's practice!

Case Studies: Building Web Applications with Shiny in R

Preparing Video For Download...