Aan de slagBegin gratis

Een vloeiende curve fitten: checkbox-input

In tegenstelling tot tekst- en numerieke inputs, zijn checkbox-inputs beperkt tot slechts twee mogelijke waarden: TRUE of FALSE. Wanneer de gebruiker een checkbox aanvinkt, krijgt de input de waarde TRUE, en als het vakje is uitgevinkt dan is de waarde FALSE.

Let op: de parameter value van de functie checkboxInput(), die de beginwaarde bepaalt, kan alleen op TRUE of FALSE worden gezet.

De code voor de Shiny-app uit de vorige oefening is meegegeven met een kleine aanpassing. Het ggplot-object binnen renderPlot() wordt nu toegewezen aan de variabele p.

Deze oefening maakt deel uit van de cursus

Casestudies: webapplicaties bouwen met Shiny in R

Bekijk cursus

Oefeninstructies

Je taak is om een checkbox-input toe te voegen die, wanneer deze is aangevinkt, een best-fit-lijn aan de plot toevoegt. Specifiek:

  • Voeg in de UI een checkbox-input toe met ID "fit", het label "Add line of best fit", en standaard uitgevinkt.
  • Voeg code toe aan de server zodat, wanneer de input is aangevinkt, er een best-fit-lijn aan de plot wordt toegevoegd. De code om een best-fit-lijn toe te voegen is meegegeven (regel 26).

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# 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)
Code bewerken en uitvoeren