Ausgabeobjekte erstellen
Es gibt drei Regeln, um in Shiny eine Ausgabe zu erstellen:
Erzeuge das Objekt mit der passenden
render*()-Funktion.Speichere das Ergebnis der Render-Funktion in der Liste
output, die ein Parameter der Server-Funktion ist. Speichere es konkret inoutput$<outputId>, um den Ausgabe-Platzhalter im UI mit der IDoutputIdzu ersetzen.Wenn die Ausgabe von vom Nutzer geänderten Eingabewerten abhängt, kannst du auf alle Eingaben über den Parameter
inputder Server-Funktion zugreifen. Konkret liefertinput$<inputId>immer den aktuellen Wert des Eingabefelds mit der IDinputId.
Diese Übung ist Teil des Kurses
Fallstudien: Webanwendungen mit Shiny in R erstellen
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)