Aan de slagBegin gratis

Outputobjecten construeren

Er zijn drie regels om een output in Shiny te bouwen:

  1. Bouw het object met de juiste render*()-functie.

  2. Sla het resultaat van de renderfunctie op in de output-lijst, een parameter van de serverfunctie. Sla het specifiek op in output$<outputId> om de output-placeholder in de UI met ID outputId te vervangen.

  3. Als de output afhankelijk is van door de gebruiker aangepaste invoerwaarden, kun je alle inputs benaderen via de parameter input van de serverfunctie. Concreet: input$<inputId> geeft altijd de huidige waarde terug van het invoerveld met ID inputId.

Deze oefening maakt deel uit van de cursus

Casestudies: webapplicaties bouwen met Shiny in R

Bekijk cursus

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