Outputobjecten construeren
Er zijn drie regels om een output in Shiny te bouwen:
Bouw het object met de juiste
render*()-functie.Sla het resultaat van de renderfunctie op in de
output-lijst, een parameter van de serverfunctie. Sla het specifiek op inoutput$<outputId>om de output-placeholder in de UI met IDoutputIdte vervangen.Als de output afhankelijk is van door de gebruiker aangepaste invoerwaarden, kun je alle inputs benaderen via de parameter
inputvan de serverfunctie. Concreet:input$<inputId>geeft altijd de huidige waarde terug van het invoerveld met IDinputId.
Deze oefening maakt deel uit van de cursus
Casestudies: webapplicaties bouwen met Shiny in R
Oefeninstructies
Je krijgt een Shiny-app met een volledig werkend UI-gedeelte. Jouw taak is om alle outputs te construeren. Specifiek:
- Maak een plot van de
cars-gegevensset in de plot-output-placeholder met ID "cars_plot" (regel 23). - Render in de tekstoutput "greeting" een begroeting in de vorm van "Hello NAME", waarbij NAME de waarde is van de name-input (regel 28).
- Laat in de output "iris_table" een tabel zien met de eerste n rijen van de
iris-gegevensset, waarbij n de waarde is van de numerieke input (regel 33).
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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)