IniziaInizia gratis

Creare oggetti di output

Ci sono tre regole per costruire un output in Shiny:

  1. Crea l'oggetto con la funzione render*() appropriata.

  2. Salva il risultato della funzione di render nella lista output, che è un parametro della funzione server. In particolare, salvalo in output$<outputId> per sostituire nel UI il segnaposto dell'output con ID outputId.

  3. Se l'output dipende da valori di input modificati dall'utente, puoi accedere a qualsiasi input usando il parametro input della funzione server. In particolare, input$<inputId> restituisce sempre il valore corrente del campo di input con ID inputId.

Questo esercizio fa parte del corso

Casi di studio: creare applicazioni web con Shiny in R

Visualizza il corso

Istruzioni dell'esercizio

Ti viene fornita un'app Shiny con la parte UI completamente funzionante. Il tuo compito è costruire tutti gli output. In particolare:

  • Crea un grafico del dataset cars nel segnaposto di output del grafico con ID "cars_plot" (riga 23).
  • Nell'output di testo "greeting", visualizza un saluto della forma "Hello NAME", dove NAME è il valore dell'input name (riga 28).
  • Nell'output "iris_table", mostra una tabella delle prime n righe del dataset iris, dove n è il valore dell'input numerico (riga 33).

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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)
Modifica ed esegui il codice