LoslegenKostenlos loslegen

Ausgabeobjekte erstellen

Es gibt drei Regeln, um in Shiny eine Ausgabe zu erstellen:

  1. Erzeuge das Objekt mit der passenden render*()-Funktion.

  2. Speichere das Ergebnis der Render-Funktion in der Liste output, die ein Parameter der Server-Funktion ist. Speichere es konkret in output$<outputId>, um den Ausgabe-Platzhalter im UI mit der ID outputId zu ersetzen.

  3. Wenn die Ausgabe von vom Nutzer geänderten Eingabewerten abhängt, kannst du auf alle Eingaben über den Parameter input der Server-Funktion zugreifen. Konkret liefert input$<inputId> immer den aktuellen Wert des Eingabefelds mit der ID inputId.

Diese Übung ist Teil des Kurses

Fallstudien: Webanwendungen mit Shiny in R erstellen

Kurs anzeigen

Anleitung zur Übung

Du bekommst eine Shiny-App mit einem vollständig funktionalen UI-Teil. Deine Aufgabe ist es, alle Ausgaben zu erstellen. Konkret:

  • Erstelle einen Plot des cars-Datensatzes im Plot-Ausgabeplatzhalter mit der ID "cars_plot" (Zeile 23).
  • Rendere im Textausgabe-Element "greeting" eine Begrüßung in der Form "Hello NAME", wobei NAME der Wert der Name-Eingabe ist (Zeile 28).
  • Zeige in der Ausgabe "iris_table" eine Tabelle der ersten n Zeilen des iris-Datensatzes, wobei n dem Wert der numerischen Eingabe entspricht (Zeile 33).

Interaktive Übung

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

# Load the shiny package
library(shiny)

# Define UI for the application
ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      textInput("name", "What is your name?", "Dean"),
      numericInput("num", "Number of flowers to show data for",
                   10, 1, nrow(iris))
    ),
    mainPanel(
      textOutput("greeting"),
      plotOutput("cars_plot"),
      tableOutput("iris_table")
    )
  )
)

# Define the server logic
server <- function(input, output) {
  # Create a plot of the "cars" dataset 
  output$cars_plot <- render___({
    plot(cars)
  })
  
  # Render a text greeting as "Hello "
  output$greeting <- ___({
    paste("Hello", ___)
  })
  
  # Show a table of the first n rows of the "iris" data
  ___ <- ___({
    data <- iris[1:input$num, ]
    data
  })
}

# Run the application
shinyApp(ui = ui, server = server)
Code bearbeiten und ausführen