Adaugă un filtru pentru ani: intrare cu glisor numeric
Intrările de tip glisor pot fi folosite în scopuri similare cu intrările numerice, deoarece ambele îi oferă utilizatorului posibilitatea de a selecta un număr.
Dacă valoarea inițială furnizată (argumentul value) a glisorului este un singur număr, atunci glisorul va fi folosit pentru a selecta valori individuale. Dacă însă valoarea inițială este un vector cu două numere, glisorul va permite selectarea a două valori în loc de una singură.
Am văzut deja că diferite tipuri de intrări pot avea argumente diferite. Poate fi dificil să reții exact ce argumente folosește fiecare funcție de intrare. Singura modalitate de a afla ce argumente poți folosi cu o anumită funcție de intrare este să consulți documentația sau fișierul ei de ajutor.
Acest exercițiu face parte din cursul
Studii de caz: Construirea aplicațiilor web cu Shiny în R
Instrucțiuni pentru exercițiu
- Adaugă un
sliderInput()în UI cu ID-ul "years" și eticheta "Years" (linia 14).- Setează valoarea minimă la cel mai vechi an din setul de date și valoarea maximă la cel mai recent an din setul de date.
- Implicit, capetele glisorului ar trebui să fie setate la 1977 și 2002, astfel încât să fie afișate doar datele din intervalul acestor doi ani (inclusiv).
- Adaugă cod în server astfel încât anii selectați în intrare să fie folosiți pentru a filtra datele
gapminder, iar în rezultate să apară doar înregistrările din intervalul respectiv (linia 28).
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textInput("title", "Title", "GDP vs life exp"),
numericInput("size", "Point size", 1, 1),
checkboxInput("fit", "Add line of best fit", FALSE),
radioButtons("color", "Point color",
choices = c("blue", "red", "green", "black")),
selectInput("continents", "Continents",
choices = levels(gapminder$continent),
multiple = TRUE,
selected = "Europe"),
# Add a slider selector for years to filter
___("years", ___, ___, ___, ___)
),
mainPanel(
plotOutput("plot")
)
)
)
# Define the server logic
server <- function(input, output) {
output$plot <- renderPlot({
# Subset the gapminder data by the chosen years
data <- subset(gapminder,
continent %in% input$continents &
year >= ___$years[1] & year <= ___$years[2])
p <- ggplot(data, aes(gdpPercap, lifeExp)) +
geom_point(size = input$size, col = input$color) +
scale_x_log10() +
ggtitle(input$title)
if (input$fit) {
p <- p + geom_smooth(method = "lm")
}
p
})
}
shinyApp(ui = ui, server = server)