0% found this document useful (0 votes)
59 views45 pages

Building Web Applications in R With Shiny: Reactive Flow

This document discusses building web applications in R using Shiny. It covers key concepts in Shiny like reactivity, UI inputs, and rendering functions. Reactivity allows inputs and outputs to be linked so that changes in inputs trigger updates to outputs. UI inputs allow users to interact with the application. Rendering functions like renderPlot and renderTable are used on the server side to dynamically generate outputs in response to inputs. The document provides examples of building interactive UI elements and linking them to outputs through reactive expressions.

Uploaded by

spullc
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
59 views45 pages

Building Web Applications in R With Shiny: Reactive Flow

This document discusses building web applications in R using Shiny. It covers key concepts in Shiny like reactivity, UI inputs, and rendering functions. Reactivity allows inputs and outputs to be linked so that changes in inputs trigger updates to outputs. UI inputs allow users to interact with the application. Rendering functions like renderPlot and renderTable are used on the server side to dynamically generate outputs in response to inputs. The document provides examples of building interactive UI elements and linking them to outputs through reactive expressions.

Uploaded by

spullc
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 45

BUILDING WEB APPLICATIONS IN R WITH SHINY

Reactive flow
Building Web Applications in R
with Shiny

Reactivity, in spreadsheets
Building Web Applications in R
with Shiny

Reactivity, in spreadsheets
Building Web Applications in R
with Shiny

Reactivity, in spreadsheets
Building Web Applications in R
with Shiny

Reactivity, in spreadsheets
Building Web Applications in R
with Shiny

Reactivity, in spreadsheets
Building Web Applications in R
with Shiny

Reactions
The input$ list stores the current value of each input
object under its name.
# Set alpha level
sliderInput(inputId = "alpha",
input$alpha = 0.2
label = "Alpha:",
min = 0, max = 1,
value = 0.5)

input$alpha = 0.5

input$alpha

input$alpha = 0.8
Building Web Applications in R
with Shiny

Reactivity 101
Reactivity automatically occurs when an input value
is used to render an output object.

# Define server function required to create the scatterplot


server <- function(input, output) {

# Create the scatterplot object the plotOutput function is expecting


output$scatterplot <- renderPlot({
ggplot(data = movies, aes_string(x = input$x, y = input$y)) +
geom_point(alpha = input$alpha)
})
}
Building Web Applications in R
with Shiny

Reactive flow
Schedule updates
invalidateLater()
Trigger arbitrary code
observeEvent()
observe()
Modularize
run(this) Prevent
reactions reactions
reactive() isolate()

input$x expression() output$y

Create your Render


own reactive values reactive output
reactiveValues() Update render*()
reactiveFileReader()
reactivePoll() Delay reactions
*Input() eventReactive()
Building Web Applications in R
with Shiny

Reactive flow, simplified

input$x expression() output$y

Create your Render


own reactive values reactive output
*Input() Update render*()
BUILDING WEB APPLICATIONS IN R WITH SHINY

Let's practice!
BUILDING WEB APPLICATIONS IN R WITH SHINY

UI inputs
Building Web Applications in R
with Shiny
Building Web Applications in R
with Shiny
Building Web Applications in R
with Shiny

checkboxInput
Add a checkbox input to specify whether the data plotted
should be shown in a data table.

1. ui: Add an input widget that the user can interact with
to check/uncheck the box.
2. ui: Add an output defining where the data table should
appear.
3. server: Add a reactive expression that creates the
data table if the checkbox is checked.
Building Web Applications in R
with Shiny

checkboxInput
Add a checkbox input to specify whether the data plotted
should be shown in a data table.

1. ui: Add an input widget that the user can interact with
to check/uncheck the box.

# Show data table


checkboxInput(inputId = "show_data",
label = "Show data table",
value = TRUE)
Building Web Applications in R
with Shiny

Watch for commas!


sidebarPanel(
# Select variable for y-axis
selectInput(inputId = "y", label = "Y-axis:",
choices = c("imdb_rating", "imdb_num_votes", "critics_score",
"audience_score", "runtime"),
selected = "audience_score"),
# Select variable for x-axis
selectInput(inputId = "x", label = "X-axis:",
choices = c("imdb_rating", "imdb_num_votes", "critics_score",
"audience_score", "runtime"),
selected = "critics_score"),
# Show data table
checkboxInput(inputId = "show_data",
label = "Show data table",
value = TRUE)
)
Building Web Applications in R
with Shiny

checkboxInput
Add a checkbox input to specify whether the data plotted
should be shown in a data table.

2. ui: Add an output to the UI defining where the data


table should appear.
mainPanel(
# Show scatterplot
plotOutput(outputId = "scatterplot"),
# Show data table
DT::dataTableOutput(outputId = "moviestable")
)
Building Web Applications in R
with Shiny

checkboxInput
Add a checkbox input to specify whether the data plotted
should be shown in a data table.

3. server: Add a reactive expression that creates the


data table if the checkbox is checked.
# Print data table if checked
output$moviestable <- DT::renderDataTable({
if(input$show_data){
DT::datatable(data = movies %>% select(1:7),
options = list(pageLength = 10),
rownames = FALSE)
}
})
Building Web Applications in R
with Shiny
Building Web Applications in R
with Shiny
Building Web Applications in R
with Shiny

Scoping
● We saw that the data loaded on top of the Shiny app
is visible to the server.
● It is also visible to the UI.

# Display number of observations


HTML(paste0("The dataset has ", nrow(movies),
“observations."))
BUILDING WEB APPLICATIONS IN R WITH SHINY

Let's practice!
BUILDING WEB APPLICATIONS IN R WITH SHINY

Rendering functions
Building Web Applications in R
with Shiny

works
with
Building Web Applications in R
with Shiny

works
with
Building Web Applications in R
with Shiny
Building Web Applications in R
with Shiny
Building Web Applications in R
with Shiny

renderTable
Add a table beneath the plot displaying summary statistics for
a new variable: score_ratio = audience_score / critics_score.

1. Calculate the new variable.


2. ui: Add an input widget that the user can interact with to
check boxes for selected title types.
3. ui: Add an output defining where the summary table should
appear.
4. server: Add a reactive expression that creates the summary
table.
Building Web Applications in R
with Shiny

renderTable
Add a table beneath the plot displaying summary statistics for
a new variable: score_ratio = audience_score / critics_score.

1. Calculate the new variable.

# Create new variable:


# ratio of critics and audience scores
movies <- movies %>%
mutate(score_ratio = audience_score / critics_score)
Building Web Applications in R
with Shiny

renderTable
Add a table beneath the plot displaying summary statistics for
a new variable: score_ratio = audience_score / critics_score.

2. ui: Add an input widget that the user can interact with to
check boxes for selected title types.
# Subset for title types
checkboxGroupInput(inputId = "selected_title_type",
label = "Select title type:",
choices = levels(movies$title_type),
selected = levels(movies$title_type))
Building Web Applications in R
with Shiny

renderTable
Add a table beneath the plot displaying summary statistics for
a new variable: score_ratio = audience_score / critics_score.

3. ui: Add an output defining where the summary table should


appear.
mainPanel(
# Show scatterplot
plotOutput(outputId = "scatterplot"),
# Show data table
tableOutput(outputId = "summarytable")
)
Building Web Applications in R
with Shiny

renderTable
Add a table beneath the plot displaying summary statistics for
a new variable: score_ratio = audience_score / critics_score.

4. server: Add a reactive expression that creates the summary


table.
output$summarytable <- renderTable(
{movies %>%
filter(title_type %in% input$selected_title_type) %>%
group_by(mpaa_rating) %>%
summarise(Mean = mean(score_ratio), SD = sd(score_ratio), n = n())},
striped = TRUE, spacing = "l", align = "lccr", digits = 4, width = "90%",
caption = "Score ratio (audience / critics' scores) summary statistics by
MPAA rating."
)
Building Web Applications in R
with Shiny
Building Web Applications in R
with Shiny

renderTable
Add a table beneath the plot displaying summary statistics for
a new variable: score_ratio = audience_score / critics_score.

4. server: Add a reactive expression that creates the summary


table.
output$summarytable <- renderTable(
{movies %>%
filter(title_type %in% input$selected_title_type) %>%
group_by(mpaa_rating) %>%
summarise(Mean = mean(score_ratio), SD = sd(score_ratio), n = n())},
striped = TRUE, spacing = "l", align = "lccr", digits = 4, width = "90%",
caption = "Score ratio (audience / critics' scores) summary statistics by
MPAA rating."
)
Building Web Applications in R
with Shiny

Recap
● Shiny has a variety of render* functions with
corresponding *Output functions to create and
display outputs.
● render* functions can take on multiple arguments,
the first being the expression for the desired output.
● The expression in the render* function should be
wrapped in curly braces.
BUILDING WEB APPLICATIONS IN R WITH SHINY

Let's practice!
BUILDING WEB APPLICATIONS IN R WITH SHINY

UI outputs
Building Web Applications in R
with Shiny
Building Web Applications in R
with Shiny
Building Web Applications in R
with Shiny

plotOutput
Select points on the plot via brushing, and report the selected
points in a data table underneath the plot.

1. ui: Add functionality to plotOutput to select points


via brushing.
2. ui: Add an output defining where the data table should
appear.
3. server: Add a reactive expression that creates the
data table for the selected points.
Building Web Applications in R
with Shiny

plotOutput
Select points on the plot via brushing, and report the selected
points in a data table underneath the plot.

1. ui: Add functionality to plotOutput to select points


via brushing.

# Show scatterplot with brushing capability


plotOutput(outputId = "scatterplot", brush = "plot_brush")
Building Web Applications in R
with Shiny

plotOutput
Select points on the plot via brushing, and report the selected
points in a data table underneath the plot.

2. ui: Add an output defining where the data table should


appear.

# Show data table


DT::dataTableOutput(outputId = "moviestable")
Building Web Applications in R
with Shiny

plotOutput
Select points on the plot via brushing, and report the selected
points in a data table underneath the plot.

3. server: Add a reactive expression that creates the


data table for the selected points.

# Print data table


output$moviestable <- DT::renderDataTable({
brushedPoints(movies, input$plot_brush) %>%
select(title, audience_score, critics_score)
})
BUILDING WEB APPLICATIONS IN R WITH SHINY

Let's practice!

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy