Chapter 4 Reactive Programming
Before entering the topic of this chapter, let’s have a look at the solution to Exercise 6.
The ui.R
:
library(shiny)
shinyUI(fluidPage(
sidebarLayout(
sidebarPanel(
sliderInput("nrows",
"Number of rows:",
min = 1,
max = 50,
value = 10)
),
mainPanel(
plotOutput("carsPlot"),
tableOutput("carsTable")
)
)
))
The server.R
:
library(shiny)
shinyServer(function(input, output) {
output$carsPlot <- renderPlot({
plot(head(cars, input$nrows))
})
output$carsTable <- renderTable({
head(cars, input$nrows)
})
})
The solution given above works, but not perfect. A better solution would be to use reactive expression:
shinyServer(function(input, output) {
df <- reactive({
head(cars, input$nrows)
})
output$plot <- renderPlot({
plot(df())
})
output$table <- renderTable({
df()
})
})
- Joe Cheng from Rstudio gave an excellent tutorial on reative programming, follow the link https://www.rstudio.com/resources/webinars/shiny-developer-conference/ to watch the video and the here is the slides.