r shiny part i · r shiny part i statistical computing & programming shawn santo 06-08-20...
TRANSCRIPT
![Page 1: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/1.jpg)
R Shiny Part IR Shiny Part I
Statistical Computing &Statistical Computing &ProgrammingProgramming
Shawn SantoShawn Santo
06-08-2006-08-20
1 / 361 / 36
![Page 2: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/2.jpg)
Supplementary materials
Companion videos
Introduction to R ShinyBuilding the UICreating the server function
Additional resources
Shiny documentationShiny Widgets GalleryShiny Cheat Sheet
2 / 36
![Page 3: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/3.jpg)
Shiny is an R package.
Build web-based apps with R inRStudio.
Shiny can incorporate CSS themesand JavaScript actions.
What is Shiny?
3 / 36
![Page 4: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/4.jpg)
How does Shiny work?
4 / 36
![Page 5: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/5.jpg)
How does Shiny work?
5 / 36
![Page 6: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/6.jpg)
How does Shiny work?
6 / 36
![Page 7: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/7.jpg)
Getting started
Open RStudio
Run install.packages("shiny"), if needed
Go to File > New File > Shiny Web App
Enter your application's name
Keep option Single File (app.R) selected
Enter the directory of where the application should be saved
File app.R should open, click Run App to see the result
7 / 36
![Page 8: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/8.jpg)
Function fluidPage() creates adynamic HTML user interface you seewhen you look at an RShiny app.Convention is to save this as an objectnamed ui.
Function server() is user-definedand contains R commands yourcomputer or external server need torun the app.
Function shinyApp() builds theapp based on the user interface andserver pair of code.
Main components of RShiny
# Load package shinylibrary(shiny)# Define UI for applicationui <- fluidPage(
)
# Define server logicserver <- function(input, output)
}
# Build and run the applicationshinyApp(ui = ui, server = server)
8 / 36
![Page 9: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/9.jpg)
Available examples
Enter any of the following in your Console to see the Shiny app in action along with thecode.
runExample("01_hello") # a histogramrunExample("02_text") # tables and data framesrunExample("03_reactivity") # a reactive expressionrunExample("04_mpg") # global variablesrunExample("05_sliders") # slider barsrunExample("06_tabsets") # tabbed panelsrunExample("07_widgets") # help text and submit buttonsrunExample("08_html") # Shiny app built from HTMLrunExample("09_upload") # file upload wizardrunExample("10_download") # file download wizardrunExample("11_timer") # an automated timer
9 / 36
![Page 10: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/10.jpg)
User interfaceUser interface
10 / 3610 / 36
![Page 11: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/11.jpg)
User interface: inputsUser interface: inputs
11 / 3611 / 36
![Page 12: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/12.jpg)
Input widgets
12 / 36
![Page 13: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/13.jpg)
13 / 36
![Page 14: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/14.jpg)
Adding an input widget
Most input widgets are set-up as *Input(inputId, label, ...) or*Button(inputId, label, ...), where * is replaced with the widget's name.
For example, to create a slider widget we can write
sliderInput(inputId = "bins", label = "Number of bins:", min = 1, max = 50, value = 30)
Typically, the first two widget function argument names are not specified since most widgetsfirst take an inputId and label. Argument inputId is where you specify a name forthe widget (this is not seen by the user); argument label is the label that will appear in yourapp (this will be seen by the user).
14 / 36
![Page 15: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/15.jpg)
What do these widget functionsreturn?
sliderInput(inputId = "bins", label = "Number of bins:", min = 1, max = 50, value = 30)
Some HTML!
<div class="form-group shiny-input-container"> <label class="control-label" for="bins">Number of bins:</label> <input class="js-range-slider" id="bins" data-min="1" data-max="50" dat</div>
15 / 36
![Page 16: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/16.jpg)
ui <- fluidPage( # add slider sliderInput("bins", "Number of bins:", min = 1, max = 50, value = 30))
server <- function(input, output) {
}
shinyApp(ui = ui, server = server)
Assortment of input widgets
16 / 36
![Page 17: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/17.jpg)
Assortment of input widgets
ui <- fluidPage( # add slider sliderInput("bins", "Number of bins:", min = 1, max = 50, value = 30), # text box input textInput("title", "Histogram title", value = "Histogram"))
server <- function(input, output) {
}
shinyApp(ui = ui, server = server)
17 / 36
![Page 18: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/18.jpg)
Assortment of input widgets
Continue to add as many additional widgets as you want/need.
ui <- fluidPage( # add slider sliderInput("bins", "Number of bins:", min = 1, max = 50, value = 30), # text box input textInput("title", "Histogram title", value = "Histogram"), # combo box selectInput("color", "Histogram fill", choices = c("Red", "White", "Bl selected = "Red"))
server <- function(input, output) {
}
shinyApp(ui = ui, server = server)
18 / 36
![Page 19: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/19.jpg)
User interface: outputsUser interface: outputs
19 / 3619 / 36
![Page 20: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/20.jpg)
Output functions
Inputs are added with *Input(). Similarly, outputs in Shiny are added with *Output().
Output function Creates
dataTableOutput() data table
htmlOutput() raw HTML
imageOutput() image
plotOutput() plot
tableOutput() table
textOutput() text
uiOutput() raw HTML
verbatimTextOutput() text
20 / 36
![Page 21: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/21.jpg)
Output function details
The first argument for each output function is outputId. This argument is where youspecify a name for the output (this is not seen by the user). This name will serve as referencefor code in function server().
21 / 36
![Page 22: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/22.jpg)
ui <- fluidPage( # add slider sliderInput("bins", "Number of bins:", min = 1, max = 50, value = 30),
plotOutput(outputId = "hist"))
server <- function(input, output) {
}
shinyApp(ui = ui, server = server)
Output function
Our code plotOutput(outputId = "hist") allocates space for a plot. We haven’tcreated anything yet, hence no plot is visible.
22 / 36
![Page 23: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/23.jpg)
What do these output functionsreturn?
plotOutput(outputId = "hist")
Some HTML!
<div id="hist" class="shiny-plot-output" style="width: 100% ; height: 400
23 / 36
![Page 24: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/24.jpg)
User interface review
Build the user interface inside function fluidPage() and save it as an object namedui.
Function fluidPage() scales its components in realtime to fill all available browserwidth - dynamic HTML user interface.
Build inputs with *Input(inputId, label, ...).
Build outputs with *Output(outputId, ...).
Separate multiple inputs and outputs with commas.
Run your app after each added input or output to minimize complications later on.
24 / 36
![Page 25: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/25.jpg)
Beyond the UI
You have a user interface built. Why does it not do anything?
You need to give R commands that react when inputs are provided or are changed. Thesereactions are seen by updates to the outputs. Take a look athttps://shiny.rstudio.com/gallery/tabsets.html. As you change inputs, look at what ishighlighted in function server().
This is where function server(), that you create, will come into play.
25 / 36
![Page 26: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/26.jpg)
ServerServer
26 / 3626 / 36
![Page 27: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/27.jpg)
Function server()
server <- function(input, output) {
}
This function plays a special role in the Shiny process; it builds a list-like object namedoutput that contains all of the code needed to update the R objects in your app. Each Robject needs to have its own entry in the list.
You can create an entry by defining a new element for output within the server function. Theelement name should match the name of the reactive element that you created in the userinterface. This is where inputId and outputId come into play.
27 / 36
![Page 28: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/28.jpg)
Steps to create the server()function
1. Save objects to display to output$<outputId>, where <outputId> is the namegiven from function *Output().
server <- function(input, output) { output$hist <- # code}
2. Generally, build these output$<outputId> objects with the family of functionsrender*().
server <- function(input, output) { output$hist <- renderPlot({ # code to build your object # in this case, code to create # the histogram }) }
3. Access your input values with input$<inputId>, where <inputID> is the namegiven from function *Input().
28 / 36
![Page 29: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/29.jpg)
Render functions
Render function Creates a reactive
renderDataTable() data table
renderImage() image
renderPlot() plot
renderPrint() version of the given function that captures print output
renderTable() table
renderText() version of the given function to turn its result into a charactervector.
renderUI() HTML
29 / 36
![Page 30: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/30.jpg)
Render and Output connection
Each render*() function only requires a single argument: an R expression surrounded bybraces, { }. The expression can be one simple line of code, or it can involve many.
30 / 36
![Page 31: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/31.jpg)
Reactivity
Assuming a well-built Shiny app, every time the user moves the slider, selects a value in acombo box, selects a new radio button option, outputs will automatically get updated wheninputs change.
This is known as reactivity. Reactivity automatically occurs whenever you use an input valueto render an output object.
31 / 36
![Page 32: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/32.jpg)
Function server() review
The server function does the work in terms of building and rebuilding R objects thatultimately get displayed to the user in the user interface.
Save output you build to output$<outputId>.
Build output with a render*() function.
Access inputs with input$<inputId>.
Multiple outputs can be placed in the server function.
Reactivity happens automatically when you use inputs to build rendered outputs.
32 / 36
![Page 33: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/33.jpg)
Share your appShare your app
33 / 3633 / 36
![Page 34: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/34.jpg)
Upload it to shinyapps.io
34 / 36
![Page 35: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/35.jpg)
1. Create a free account athttps://www.shinyapps.io/.
2. Build your Shiny app.
3. Publish your app.
What you get with a free account:
5 active applications
25 hours per month of active use
Distribute your app
35 / 36
![Page 36: R Shiny Part I · R Shiny Part I Statistical Computing & Programming Shawn Santo 06-08-20 Supplementar y materials Companion videos Introduction to R Shiny Building the UI Creating](https://reader035.vdocument.in/reader035/viewer/2022070917/5fb71ffb44450f03882e04e9/html5/thumbnails/36.jpg)
References
Shiny. (2019). Shiny.rstudio.com. https://shiny.rstudio.com/
36 / 36