Comenzando con brillante

Aplicación sencilla

Cada aplicación brillante contiene dos partes: una definición de interfaz de usuario (UI) y un script de servidor (servidor). Este ejemplo muestra cómo puede imprimir “Hola mundo” desde la interfaz de usuario o desde el servidor.

UI.R

En la interfaz de usuario, puede colocar algunos objetos de vista (div, entradas, botones, etc.).

library(shiny)

# Define UI for application print "Hello world" 
shinyUI(

  # Create bootstrap page 
  fluidPage(
    
    # Paragraph "Hello world"
    p("Hello world"),

    # Create button to print "Hello world" from server
    actionButton(inputId = "Print_Hello", label = "Print_Hello World"),

    # Create position for server side text
    textOutput("Server_Hello")
    
  )
)

Servidor.R

En el script del servidor puede definir métodos que manipulan datos o escuchan acciones.

# Define server logic required to print "Hello World" when button is clicked
shinyServer(function(input, output) {
  
  # Create action when actionButton is clicked
  observeEvent(input$Print_Hello,{

    # Change text of Server_Hello
    output$Server_Hello = renderText("Hello world from server side")
  })
  
  
})

¿Como correr?

Puede ejecutar su aplicación de varias maneras:

  1. Cree dos archivos diferentes y colóquelos en un directorio, luego use runApp('your dir path')
  2. Puede definir dos variables (ui y server, por ejemplo) y luego usar shinyApp(ui,server) para ejecutar su aplicación

Resultado

En este ejemplo, verá algo de texto y un botón:

captura de pantalla antes de hacer clic

Y después de hacer clic en el botón, el servidor responde:

captura de pantalla después del clic

Instalación o configuración

Shiny puede ejecutarse como una aplicación independiente en su computadora local, en un servidor que puede proporcionar aplicaciones brillantes a múltiples usuarios (usando un servidor brillante) o en shinyapps.io.

  1. Instalando Shiny en una computadora local: en R/RStudio, ejecute install.packages("shiny") si está instalando desde CRAN, o devtools::install_github("rstudio/shiny") si está instalando del repositorio RStudio Github. El repositorio de Github alberga una versión de desarrollo de Shiny que posiblemente tenga más funciones en comparación con la versión CRAN, pero también puede ser inestable.

¿Cuándo usaría shiny?

  1. Tengo algunos análisis de datos hechos en algunos datos y tengo muchos ’non-coding’ people on the team, who have similar data like mine, and have similar analysis requirements. In such cases, I can build a web application with shiny, which takes in user specific input data files, and generate analyses.
  2. Necesito compartir datos analizados o gráficos relevantes con otros miembros del equipo. Las aplicaciones web brillantes pueden ser útiles en tales situaciones.
  3. No tengo mucha experiencia con la programación de aplicaciones web, pero necesito ensamblar rápidamente una interfaz simple. Brillante al rescate con una interfaz de usuario sencilla y elementos de servidor y una codificación mínima.
  4. Los elementos interactivos permiten a sus usuarios explorar qué elemento de los datos es relevante para ellos. Por ejemplo, podría tener cargados los datos de toda la empresa, pero tener un menú desplegable por departamento como “Ventas”, “Producción”, “Finanzas” que puede resumir los datos de la forma en que los usuarios quieren verlos. La alternativa sería producir un gran paquete de informes con análisis para cada departamento, pero solo leen su capítulo y el total.

Incluye parcelas

La forma más sencilla de incluir gráficos en su shinyApp es usar plotOutput en la interfaz de usuario y renderPlot en el servidor. Esto funcionará con gráficos base así como con ggPlots

library(shiny)
library(ggplot2)

ui <- fluidPage(
  plotOutput('myPlot'),
  plotOutput('myGgPlot')
)

server <- function(input, output, session){
  output$myPlot = renderPlot({
    hist(rnorm(1000))
  })
  output$myGgPlot <- renderPlot({
    ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) + geom_point()
  })
}

shinyApp(ui, server)

Incluyendo tablas

Las tablas se incluyen más fácilmente con el paquete DT, que es una interfaz R para la biblioteca de JavaScript DataTables.

library(shiny)
library(DT)

ui <- fluidPage(
  dataTableOutput('myTable')
)

server <- function(input, output, session){
  output$myTable <- renderDataTable({
    datatable(iris)
  })
}

shinyApp(ui, server)