IniziaInizia gratis

Adatta una curva smooth: checkbox input

A differenza degli input testuali e numerici, gli input di tipo checkbox sono limitati a due soli valori possibili: TRUE o FALSE. Quando l'utente seleziona una checkbox, l'input assume il valore TRUE; se la deseleziona, restituisce FALSE.

Nota che il parametro value della funzione checkboxInput(), che definisce il valore iniziale, può essere impostato solo su TRUE o FALSE.

Il codice dell'app Shiny dell'esercizio precedente è fornito con alcune modifiche. L'oggetto ggplot all'interno di renderPlot() è ora assegnato alla variabile p.

Questo esercizio fa parte del corso

Casi di studio: creare applicazioni web con Shiny in R

Visualizza il corso

Istruzioni dell'esercizio

Il tuo compito è aggiungere una checkbox che, quando selezionata, aggiunga una retta di best fit al grafico. In particolare:

  • Aggiungi alla UI una checkbox con ID "fit", etichetta "Add line of best fit" e stato iniziale non selezionato.
  • Aggiungi il codice nel server in modo che, quando l'input è selezionato, al grafico venga aggiunta la retta di best fit. Il codice per aggiungere la retta di best fit è fornito (riga 26).

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# Define UI for the application
ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      textInput("title", "Title", "GDP vs life exp"),
      numericInput("size", "Point size", 1, 1),
      # Add a checkbox for line of best fit
      ___
    ),
    mainPanel(
      plotOutput("plot")
    )
  )
)

# Define the server logic
server <- function(input, output) {
  output$plot <- renderPlot({
    p <- ggplot(gapminder, aes(gdpPercap, lifeExp)) +
      geom_point(size = input$size) +
      scale_x_log10() +
      ggtitle(input$title)
    
    # When the "fit" checkbox is checked, add a line
    # of best fit
    if (___) {
      p <- p + geom_smooth(method = "lm")
    }
    p
  })
}

# Run the application
shinyApp(ui = ui, server = server)
Modifica ed esegui il codice