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
Oefeninstructies
Je krijgt een Shiny-app met twee numerieke inputs, num1 en num2, en een tekstoutput. Jouw taak:
- Bereken in een reactieve variabele
my_sumde som van de twee numerieke inputs (regel 10). - Bereken in een reactieve variabele
my_averagehet 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)