LoslegenKostenlos loslegen

Glatte Kurve anpassen: Checkbox-Eingabe

Im Gegensatz zu Text- und numerischen Eingaben sind Checkbox-Eingaben auf zwei mögliche Werte beschränkt: TRUE oder FALSE. Wenn der oder die Nutzer:in ein Kontrollkästchen aktiviert, hat die Eingabe den Wert TRUE; ist das Kästchen deaktiviert, liefert es FALSE.

Beachte, dass der Parameter value der Funktion checkboxInput() – er legt den Anfangswert fest – nur auf TRUE oder FALSE gesetzt werden kann.

Der Code für die Shiny-App aus der letzten Übung ist mit kleinen Anpassungen vorgegeben. Das ggplot-Plot-Objekt innerhalb von renderPlot() wird jetzt der Variablen p zugewiesen.

Diese Übung ist Teil des Kurses

Fallstudien: Webanwendungen mit Shiny in R erstellen

Kurs anzeigen

Anleitung zur Übung

Deine Aufgabe ist es, eine Checkbox-Eingabe hinzuzufügen, die – wenn aktiviert – eine Regressionslinie (line of best fit) zum Plot hinzufügt. Konkret:

  • Füge im UI eine Checkbox mit der ID "fit", dem Label "Add line of best fit" und initial deaktiviertem Zustand hinzu.
  • Ergänze den Server-Code so, dass beim Aktivieren der Eingabe eine line of best fit zum Plot hinzugefügt wird. Der Code zum Hinzufügen der line of best fit ist vorhanden (Zeile 26).

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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 bearbeiten und ausführen