Añade un filtro por año: control deslizante numérico
Los controles deslizantes pueden usarse para fines similares a los de las entradas numéricas, ya que ambos permiten al usuario seleccionar un número.
Si el valor inicial proporcionado (el argumento value) del control deslizante es un único número, entonces se usará para seleccionar valores individuales. Sin embargo, si el valor inicial es un vector de dos números, el control deslizante se usará para seleccionar dos números en lugar de un único valor.
Ya hemos visto que diferentes entradas pueden tener argumentos distintos. Puede ser difícil recordar los argumentos exactos que usa cada entrada. La única forma de saber qué argumentos puedes usar con una función de entrada específica es consultando su documentación o archivo de ayuda.
Este ejercicio forma parte del curso
Casos prácticos: crea aplicaciones web con Shiny en R
Instrucciones del ejercicio
- Añade un
sliderInput()a la UI con ID "years" y la etiqueta "Years" (línea 14).- Establece el valor mínimo en el primer año del conjunto de datos y el valor máximo en el último año del conjunto de datos.
- De forma predeterminada, los extremos del control deslizante deben fijarse en 1977 y 2002, para que solo se muestren los datos entre esos dos años (inclusive).
- Añade código en el servidor para que los años seleccionados en la entrada se usen para filtrar los datos de
gapminder, y solo aparezcan los registros dentro de esos años (línea 28).
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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)