Konteksty reaktywne
Wartości reaktywne to specjalne konstrukcje w Shiny – nie spotkasz ich nigdzie indziej w programowaniu w R. Dlatego nie można ich używać w dowolnym kodzie R: wartości reaktywne są dostępne wyłącznie w kontekście reaktywnym.
Właśnie dlatego każda zmienna zależna od wartości reaktywnej musi być tworzona za pomocą funkcji reactive() – w przeciwnym razie pojawi się błąd. Sam serwer Shiny nie jest kontekstem reaktywnym, ale już funkcja reactive(), funkcja observe() oraz wszystkie funkcje render*() już nim są.
To ćwiczenie jest częścią kursu
Studia przypadków: tworzenie aplikacji webowych w Shiny w R
Instrukcje do ćwiczenia
Masz do dyspozycji aplikację Shiny zawierającą dwa wejścia numeryczne, num1 i num2, oraz wyjście tekstowe. Twoim zadaniem jest:
- W zmiennej reaktywnej o nazwie
my_sumobliczyć sumę dwóch wejść numerycznych (wiersz 10). - W zmiennej reaktywnej o nazwie
my_averageobliczyć średnią z obu wejść (wiersz 14). - W wyjściu tekstowym wyświetlić obliczoną średnią, korzystając ze zmiennych reaktywnych (wiersz 23).
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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)