ÎncepețiÎncepe gratuit

Adaugă un selector de continent: select input

Când există multe opțiuni din care utilizatorul poate alege, butoanele radio pot ocupa mult spațiu și s-ar putea să nu fie ideale. Select input-urile — cunoscute și ca „liste derulante" — pot fi folosite tot pentru a-i cere utilizatorului să aleagă o opțiune dintr-o listă, dar într-un mod mai compact. Cu un select input, toate opțiunile apar într-o listă derulantă, astfel încât poate fi folosit chiar și atunci când ai multe variante disponibile.

Similar cu butoanele radio, select input-urile au și ele parametrii choices și selected. În plus, select input-urile dispun de argumentul multiple, care, atunci când este setat la TRUE, permite utilizatorului să selecteze mai mult de o valoare.

Codul aplicației Shiny din exercițiul anterior este furnizat cu câteva modificări minore.

Acest exercițiu face parte din cursul

Studii de caz: Construirea aplicațiilor web cu Shiny în R

Vezi cursul

Instrucțiuni pentru exercițiu

  • Adaugă un selectInput() în UI cu ID-ul "continents" și eticheta "Continents", cu continentul implicit setat la "Europe".
    • Opțiunile din listă trebuie să fie toate continentele distincte care există în setul de date gapminder.
    • Permite utilizatorului să selecteze mai multe continente simultan.
  • Adaugă cod în server astfel încât să fie afișate doar datele pentru continentul selectat, prin filtrarea setului de date gapminder (linia 23).

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")),
      # Add a continent dropdown selector
      ___(___, ___,
                  choices = levels(___),
                  multiple = ___,
                  selected = ___)
    ),
    mainPanel(
      plotOutput("plot")
    )
  )
)

# Define the server logic
server <- function(input, output) {
  output$plot <- renderPlot({
    # Subset the gapminder dataset by the chosen continents
    data <- subset(gapminder,
                   ___ %in% ___$continents)

    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)
Editează și rulează codul