ComenzarEmpieza gratis

Construir objetos de salida

Hay tres reglas para construir una salida en Shiny:

  1. Crea el objeto con la función render*() adecuada.

  2. Guarda el resultado de la función de renderizado en la lista output, que es un parámetro de la función server. En concreto, guárdalo en output$<outputId> para sustituir el marcador de posición de la interfaz con ID outputId.

  3. Si la salida depende de valores de entrada modificados por el usuario, puedes acceder a cualquiera de las entradas usando el parámetro input de la función server. En concreto, input$<inputId> siempre devolverá el valor actual del campo de entrada con ID inputId.

Este ejercicio forma parte del curso

Casos prácticos: crea aplicaciones web con Shiny en R

Ver curso

Instrucciones del ejercicio

Se te proporciona una app de Shiny con toda la parte de la interfaz ya funcional. Tu tarea es construir todas las salidas. En concreto:

  • Crea un gráfico del conjunto de datos cars en el marcador de posición de salida de gráfico con ID "cars_plot" (línea 23).
  • En la salida de texto "greeting", renderiza un saludo con el formato "Hello NAME", donde NAME es el valor de la entrada de nombre (línea 28).
  • En la salida "iris_table", muestra una tabla con las primeras n filas del conjunto de datos iris, donde n es el valor de la entrada numérica (línea 33).

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# 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)
Editar y ejecutar código