Możliwość wyświetlenia wszystkich kontynentów
Przed dodaniem selektora kontynentu aplikacja Shiny wyświetlała dane dla wszystkich kontynentów. Po jego dodaniu dane można przeglądać z podziałem na kontynenty. Co jednak, jeśli użytkownik nie chce filtrować według konkretnego kontynentu i woli zobaczyć wszystkie naraz? Niestety, po dodaniu selektora ta możliwość zniknęła.
Argument choices funkcji selectInput() można zmodyfikować, dodając do listy kontynentów dodatkową wartość. Gdy ta wartość zostanie wybrana, filtrowanie według kontynentu zostanie wyłączone.
To ćwiczenie jest częścią kursu
Studia przypadków: tworzenie aplikacji webowych w Shiny w R
Instrukcje do ćwiczenia
Dodaj w selektorze opcję wyboru wszystkich kontynentów ("All"). Gdy ta opcja jest zaznaczona, filtrowanie według kontynentu nie powinno być wykonywane. Konkretnie:
- Dodaj wartość "All" do listy opcji przekazywanych do selektora w interfejsie użytkownika (UI).
- W serwerze użyj instrukcji
if, aby sprawdzić, czy wybrany kontynent to "All". Jeśli tak, pomiń filtrowanie danych według kontynentu (wiersz 20).
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
ui <- fluidPage(
h1("Gapminder"),
sliderInput(inputId = "life", label = "Life expectancy",
min = 0, max = 120,
value = c(30, 50)),
# Add an "All" value to the continent list
selectInput("continent", "Continent",
choices = c(___, levels(gapminder$continent))),
tableOutput("table")
)
server <- function(input, output) {
output$table <- renderTable({
data <- gapminder
data <- subset(
data,
lifeExp >= input$life[1] & lifeExp <= input$life[2]
)
# Don't subset the data if "All" continent are chosen
if (___) {
data <- subset(
data,
continent == input$continent
)
}
data
})
}
shinyApp(ui, server)