Aan de slagBegin gratis

Reactieve contexten

Reactieve waarden zijn speciale constructies in Shiny; je komt ze nergens anders in R-programmeren tegen. Daarom kun je ze niet in zomaar elke R-code gebruiken: reactieve waarden zijn alleen toegankelijk binnen een reactieve context.

Dit is de reden dat elke variabele die afhangt van een reactieve waarde moet worden aangemaakt met de functie reactive(), anders krijg je een foutmelding. De Shiny-server zelf is geen reactieve context, maar de functie reactive(), de functie observe() en alle render*()-functies wel.

Deze oefening maakt deel uit van de cursus

Casestudies: webapplicaties bouwen met Shiny in R

Bekijk cursus

Oefeninstructies

Je krijgt een Shiny-app met twee numerieke inputs, num1 en num2, en een tekstoutput. Jouw taak:

  • Bereken in een reactieve variabele my_sum de som van de twee numerieke inputs (regel 10).
  • Bereken in een reactieve variabele my_average het gemiddelde van de twee inputs (regel 14).
  • Laat in de tekstoutput het berekende gemiddelde zien met behulp van de reactieve variabelen (regel 23).

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

ui <- fluidPage(
  numericInput("num1", "Number 1", 5),
  numericInput("num2", "Number 2", 10),
  textOutput("result")
)

server <- function(input, output) {
  # Calculate the sum of the inputs
  my_sum <- reactive({
    input$num1 + ___
  })

  # Calculate the average of the inputs
  my_average <- ___({
    my_sum() / 2
  })
  
  output$result <- renderText({
    paste(
      # Print the calculated sum
      "The sum is", my_sum(),
      # Print the calculated average
      "and the average is", ___
    )
  })
}

shinyApp(ui, server)
Code bewerken en uitvoeren