Tutorial de R Shiny: todo lo que necesitas saber



Este tutorial de R Shiny le proporcionará un conocimiento detallado y completo de R Shiny y cómo crear aplicaciones web interactivas.

Con la evolución de la tecnología, han surgido nuevas herramientas y marcos para crear aplicaciones web que muestran estadísticas, mapas y gráficos en tiempo real. Dado que estas funcionalidades requieren un alto procesamiento y sincronización, los lenguajes de programación se utilizan para reducir el tiempo de carga del servidor. En este tutorial de R Shiny, explicaré cómo hacer el mejor uso de R en aplicaciones web dinámicas.

tutoriales de visual studio para principiantes

Cubriremos y entenderemos los siguientes temas:





¿Qué es R Shiny?

Shiny es un paquete R que permite a los usuarios crear aplicaciones web interactivas. Esta herramienta crea una aplicación web equivalente a HTML a partir del código Shiny. Integramos código HTML y CSS nativo con funciones de R Shiny para que la aplicación sea presentable. Shiny combina el poder computacional de R con la interactividad de la web moderna.Shiny crea aplicaciones web que se implementan en la web utilizando su servidor o los servicios de alojamiento de R Shiny.

Características de R Shiny:

  • Cree aplicaciones sencillas con conocimientos básicos o sin conocimientos de herramientas web
  • Integre Shiny con herramientas web nativas para mejorar la flexibilidad y la productividad
  • E / S preconstruidas y funciones de renderizado
  • Representación sencilla del contenido de la aplicación sin múltiples recargas
  • Característica para agregar salidas calculadas (o procesadas) de scripts R
  • Agregue visualizaciones e informes en vivo.

Eso nos lleva a la pregunta:



¿En qué se diferencia Shiny de las aplicaciones tradicionales?

Tomemos un ejemplo de una aplicación meteorológica, cada vez que el usuario actualiza / carga la página o cambia alguna entrada, debe actualizar toda la página o parte de la página usando JS. Esto agrega carga al lado del servidor para su procesamiento. Shiny permite al usuario aislar o renderizar (o recargar) elementos en la aplicación, lo que reduce la carga del servidor. Desplazarse por las páginas era fácil en las aplicaciones web tradicionales, pero resultaba complicado con las aplicaciones Shiny. La estructura del código juega el papel principal en la comprensión y depuración del código. Esta característica es crucial para aplicaciones brillantes con respecto a otras aplicaciones.

Pasemos al siguiente tema en el tutorial de R Shiny, instalando el paquete R Shiny.

Instalación de R Shiny

Instalar Shiny es como instalar cualquier otro paquete en R. Ir a Consola R y ejecute el siguiente comando para instalar el paquete Shiny.



install.packages ('brillante')

Instalar R Shiny - tutorial de R shiny - Edureka

Una vez que lo haya instalado, cargue el paquete Shiny para crear aplicaciones Shiny.

biblioteca (brillante)

Antes de avanzar más en este tutorial brillante de R, veamos y comprendamos la estructura de una aplicación Shiny.

Estructura de una aplicación Shiny

Shiny consta de 3 componentes:

  1. Interfaz de usuario
  2. Servidor
  3. ShinyApp

1.Función de interfaz de usuario

Interfaz de usuario La función (UI) define el diseño y la apariencia de la aplicación. Puede agregar etiquetas CSS y HTML dentro de la aplicación para hacerla más presentable. La función contiene todas las entradas y salidas que se mostrarán en la aplicación. Cada elemento (división, pestaña o menú) dentro de la aplicación se define mediante funciones. Se accede a ellos mediante una identificación única, como elementos HTML.Aprendamos más sobre variosfunciones utilizadas en la aplicación.

Funciones de diseño brillante

  • headerPanel ()agregue un título a la aplicación. titlePanel () define el subtítulo de la aplicación. Consulte la siguiente imagen para comprender mejor headerPanel y titlePanel .
  • SidebarLayout ()define el diseño para sujetar sidebarPanel y panel principal elementos. El diseño divide la pantalla de la aplicación en el panel de la barra lateral y el panel principal. Por ejemplo, en la imagen de abajo, el rectángulo rojo es el panel principal área y el área del rectángulo negro verticalmente es sidebarPanel zona.

  • wellPanel ()define un contenedor que contiene múltiples objetos de entrada / salida de aplicaciones de objetos en la misma cuadrícula.
  • tabsetPanel ()crea un contenedor para contener pestañas. tabPanel () agrega pestañas a la aplicación definiendo elementos y componentes de pestañas. En la imagen de abajo, el negrorectángulo es tabsetPanel objeto y el rectángulo rojo es el tabPanel objeto.
  • navlistPanel ()proporciona un menú lateral con enlaces a diferentes paneles de pestañas similares a tabsetPanel () como una lista vertical en el lado izquierdo de la pantalla. En la imagen de abajo, el rectángulo negro es navlistPanel objeto y el rectángulo rojo es el tabPanel objeto.

Junto con las funciones de diseño Shiny, también puede agregar CSS en línea a cada widget de entrada en la aplicación.La aplicación Shiny incorpora características de las tecnologías web junto con características y funciones brillantes de R para enriquecer la aplicación. Use etiquetas HTML dentro de la aplicación Shiny usando etiquetas $.

Tu diseño está listo. Es hora de agregar widgets a la aplicación. Shiny proporciona varios elementos de entrada y salida del usuario para la interacción del usuario. Analicemos algunas funciones de entrada y salida.

Funciones de entrada brillantes

Cada widget de entrada tiene una etiqueta, Id, otros parámetros como elección, valor, seleccionado, mínimo, máximo, etc.

  • selectInput ()- crear un elemento HTML desplegable.
selectInput ('seleccionar', h3 ('Cuadro de selección'), elecciones = lista ('Opción 1' = 1, 'Opción 2' = 2, 'Opción 3' = 3), seleccionado = 1)

  • numericInput ()- área de entrada para escribir un número o texto.
dateInput ('num', 'Entrada de fecha', valor = '2014-01-01') numericInput ('num', 'Entrada numérica', valor = 1) textInput ('num', 'Entrada numérica', valor = ' Ingrese texto...')

  • botones de radio()- crear botones de radio para la entrada del usuario.
radioButtons ('radio', h3 ('Botones de radio'), opciones = lista ('Opción 1' = 1, 'Opción 2' = 2, 'Opción 3' = 3), seleccionado = 1)

Funciones de salida brillante

Shiny proporciona varias funciones de salida que muestran R salidas como gráficos, imágenes, tablas, etc.que muestran los correspondientes R objeto.

  • plotOutput ()- mostrar objeto de trazado R.
plotOutput'top_batsman ')
  • tableOutput ()- muestra la salida como tabla.
tableOutput'player_table ')

2. Función del servidor

Servidor función drefina la lógica del lado del servidor de la aplicación Shiny. Implica la creación de funciones y salidas que utilizan entradas para producir varios tipos de salida. Cada cliente (navegador web) llama a la función del servidor cuando carga por primera vez la aplicación Shiny. Cada salida almacena el valor de retorno de las funciones de renderizado.

Estas funciones capturan una expresión R y realizan cálculos y preprocesamiento de la expresión. Utilice la función render * que corresponda a la salida que está definiendo. Accedemos a widgets de entradautilizando entrada $ [widget-id] . Estas variables de entrada son valores reactivos. Cualquier variable intermedia creada usando variables de entrada debe reactivarse usando reactivo ({}) . Acceda a las variables usando ().

hacer * Las funciones realizan el cálculo dentro de la función del servidor y almacenan las variables de salida. La salida debe guardarse con salida $ [nombre de variable de salida] . Cada hacer * la función toma un solo argumento, es decir, una expresión R rodeada de llaves, {}.

3. Función ShinyApp

shinyApp ()la función es el corazón dela aplicación que llama CEBOLLA y servidor funciones para crear una aplicación brillante.

La siguiente imagen muestra el esquema de la aplicación Shiny.

cómo evitar interbloqueos en java

Pasemos al siguiente segmento del tutorial de R Shiny para crear la primera aplicación R Shiny.

Crea un proyecto web Shiny

Ir Archivo y crea un Nuevo proyecto en cualquier directorio -> Aplicación web brillante -> [Nombre del directorio de la aplicación Shiny]. Ingrese el nombre del directorio y haga clic en Okay .

Cada nuevo proyecto de aplicación Shiny contendrá un ejemplo de histograma para comprender los conceptos básicos de una aplicación brillante. La aplicación de histograma contiene un control deslizante seguido de un histograma que actualiza la salida para un cambio en el control deslizante. A continuación se muestra el resultado de la aplicación de histograma.

Para ejecutar la aplicación Shiny, haga clic en el Ejecutar aplicación en la esquina superior derecha del panel de fuentes. La aplicación Shiny muestra un control deslizante que toma la cantidad de contenedores como entrada y muestra el histograma de acuerdo con la entrada.

Ahora que entendió la estructura y cómo ejecutar una aplicación Shiny. Pasemos a crear nuestra primera aplicación Shiny.

Crea la primera aplicación Shiny

Puede crear un nuevo proyecto o continuar en el mismo directorio de trabajo. En este tutorial de R Shiny, crearemos una aplicación Shiny simple para mostrar estadísticas de IPL. El conjunto de datos utilizado en la aplicación se puede descargar Aquí . El conjunto de datos consta de 2 archivos, deliveries.csv contiene entregas de puntuación para cada bola (en más) bateador, lanzador, detalles de carreras y match.csv El archivo contiene detalles del partido, como la ubicación del partido, el lanzamiento, el lugar y los detalles del juego. La siguiente aplicación requiere conocimientos básicos de dplyr y para comprender el siguiente tutorial.

Siga los pasos a continuación para crear su primera aplicación brillante.

Paso 1 : Crea el contorno de una aplicación Shiny.

Borre el código existente excepto las definiciones de función en el aplicación . R archivo.

Paso 2 : Carga bibliotecas y datos.

En este paso, cargamos los paquetes y datos necesarios. Luego, limpie y transforme los datos extraídos al formato requerido. Agregue el siguiente código antes CEBOLLA y servidor función.

Código:

biblioteca (brillante) biblioteca (tidyverse) # Cargando conjunto de datos --------------------------------------- ---------------- entregas = read.csv ('C: UsersCherukuri_SindhuDownloadsdeliveries.csv', stringsAsFactors = FALSE) coincide con = read.csv ('C: UsersCherukuri_SindhuDownloadsmatches.csv', stringsAsFactors = FALSO) # Conjunto de datos de limpieza --------------------------------------------- --------- nombres (coincidencias) [1] = 'match_id' IPL = dplyr :: inner_join (coincidencias, entregas)

Explicación :

Se cargan las 2 primeras líneas tidyverse y Brillante paquete. Las siguientes 2 líneas cargan entregas de conjuntos de datos y coincidencias y se almacenan en variablesentregasypartidos. Las últimas 2 líneas actualizan el nombre de la columna delpartidosconjunto de datos para realizar una combinación interna con elentregasmesa. Almacenamos el resultado de la combinación en elIPLvariable.

Paso 3 : Crea el diseño de la aplicación Shiny .

Como se discutió antes, el CEBOLLA La función define la apariencia, los widgets y los objetos de la aplicación en la aplicación Shiny.Analicemos lo mismo en detalle.

Código

cebolla<- fluidPage( headerPanel('IPL - Indian Premier League'), tabsetPanel( tabPanel(title = 'Season', mainPanel(width = 12,align = 'center', selectInput('season_year','Select Season',choices=unique(sort(matches$season, decreasing=TRUE)), selected = 2019), submitButton('Go'), tags$h3('Players table'), div(style = 'border:1px black solidwidth:50%',tableOutput('player_table')) )), tabPanel( title = 'Team Wins & Points', mainPanel(width = 12,align = 'center', tags$h3('Team Wins & Points'), div(style = 'float:leftwidth:36%',plotOutput('wins_bar_plot')), div(style = 'float:rightwidth:64%',plotOutput('points_bar_plot')) ) )))

los CEBOLLA La función contiene un headerPanel () o titlePanel () y seguido de tabsetPanel para definir varias pestañas en la aplicación. tabPanel () define los objetos para cada pestaña, respectivamente. Cada tabPanel () consta de título y panel principal(). panel principal() crea un contenedor de ancho 12, es decir, una ventana completa y alinea los objetos de entrada y salida en el centro.

Explicación

La aplicación consta de 2 pestañas: Temporada y Ganancias y puntos del equipo.

Temporada pestaña consta de selectInput ( ) , botón de enviar y una tabla. season_year se usa para leer la entrada de les de valores. tableOutput () muestra la salida de la tabla calculada en función del servidor.La tabla player_table se muestra debajo del botón que se define en la función del servidor que se discutirá en el siguiente paso. Puntos y victorias del equipo La pestaña muestra las ganancias y los puntos del equipo en los gráficos de barras respectivos. plotOutput () muestra las salidas devueltas del renderizado * funciones. Todas las funciones de entrada y salida están encerradas dentro de una etiqueta div para agregar estilo en línea.

Ahora que estamos familiarizados con la función de interfaz de usuario, sigamos adelante con la comprensión y el uso de la función de servidor en nuestro tutorial de R Shiny.

Paso 4: agregue las declaraciones de función del servidor

los servidor función implica la creación de funciones y outputs que utilizan entradas de usuario para producir varios tipos de salida. losLa función del servidor se explica paso a paso a continuación.

Match_year = reactivo ({Match%>% filter (Season == input $ Season_year)}) playoff = reactivo ({nth (sort (Match_year () $ Match_id, decreciente = TRUE), 4)}) Match_played = reactivo ({Match_year ()%>% filter (match_id% group_by (team1)%>% resume (count = n ())}) t2 = reactivo ({matches_played ()%>% group_by (team2)%>% resume (count = n ( ))}) wl = reactivo ({partidos_jugados ()%>% filter (¡ganador! = '')%>% grupo_por (ganador)%>% resumir (no_of_wins = n ())}) wl1 = reactivo ({partidos_jugados ( )%>% group_by (ganador)%>% resumen (no_of_wins = n ())}) empatado = reactivo ({partidos_jugados ()%>% filter (ganador == '')%>% seleccionar (equipo1, equipo2)} ) mesa de juego = reactiva ({data.frame (Equipos = t1 () $ equipo1, Jugado = t1 () $ cuenta + t2 () $ cuenta, Wins = wl () $ no_of_wins, Points = wl () $ no_of_wins * 2) })

El código anterior filtra los partidos jugados antes de los playoffs cada año y almacena el resultado en la variable matches_played.mesa_de_jugadoresLa tabla contiene estadísticas de partidos por equipo, es decir, jugadas, victorias y puntos. Variablespartidos_jugados,mesa_de_jugadores,t1,atado, etc.son todos intermedios valores reactivos . Se debe acceder a estas variables usando () como se muestra en el código anterior.mesa_de_jugadoresse muestra usando la función renderTable. A continuación, cree la variable de salida para almacenar la tabla de reproducción.

salida $ player_table = renderTable ({playrtable ()})

Ahora, creemos gráficos de barras para mostrar las victorias y los puntos anotados por cada equipo en la temporada. El siguiente código muestra gráficos de barras usando ggplot. renderPlot () obtiene el objeto ggplot y almacena el resultado en la variablewins_bar_plotEl código ggplot es autoexplicativo, involucra gráficos básicos y funciones de mapeo para editar leyendas, etiquetas y gráficos.

salida $ wins_bar_plot = renderPlot ({ggplot (wl1 () [2: 9,], aes (ganador, no_of_wins, fill = ganador)) + geom_bar (stat = 'identidad') + theme_classic () + xlab ('Equipos') + ylab ('Número de victorias') + tema (axis.text.x = element_text (color = 'blanco'), legend.position = 'none', axis.title = element_text (tamaño = 14), plot.background = element_rect (color = 'white')) + geom_text (aes (x = ganador, (no_of_wins + 0.6), label = no_of_wins, size = 7))}) salida $ points_bar_plot = renderPlot ({ggplot (playertable (), aes ( Equipos, Puntos, relleno = Equipos)) + geom_bar (stat = 'identidad', tamaño = 3) + theme_classic () + theme (axis.text.x = element_text (color = 'white'), legend.text = element_text ( size = 14), axis.title = element_text (tamaño = 14)) + geom_text (aes (Equipos, (Puntos + 1), etiqueta = Puntos, tamaño = 7))})

Paso 5: Ejecute la aplicación Shiny.

Haga clic en Ejecutar aplicación. Con una ejecución exitosa, su aplicación Shiny se verá a continuación. Cualquier error o advertencias relacionados con la aplicación, los mostrará en R Console.

Tab1 - Temporada

Tab2 - Puntos y victorias del equipo

Veamos cómopara configurarCuenta Shinyapps.io para implementar sus aplicaciones Shiny.

Configurar cuenta Shinyapps.io

lista de matrices de tipo java de enteros

Ir Shinyapps.io e inicie sesión con su información, luego proporcione un nombre de cuenta único para la página y guárdelo. Después de guardar correctamente, verá un procedimiento detallado para implementar aplicaciones desde R Console. Siga el procedimiento a continuación para configurar su cuenta en Rstudio.

Paso 1. Instalar rsconnect

install.packages ('rsconnect')

Paso 2. Autorizar cuenta

los rsconnect El paquete debe estar autorizado a su cuenta mediante un token y secreto. Para hacer esto, copie todo el comando como se muestra a continuación en la página de su panel en R consola. Una vez que haya ingresado el comando con éxito en R, ahora le autorizo ​​a implementar aplicaciones en su cuenta Shinyapps.io.

rsconnect :: setAccountInfo (nombre = 'nombre de cuenta', token = 'token', secreto = 'secreto')

Paso 3. Implementar aplicación

Utilice el siguiente código para implementar aplicaciones Shiny.

biblioteca (rsconnect) rsconnect :: deployApp ('ruta / a / su / aplicación')

Una vez configurado, estará listo para implementar sus aplicaciones brillantes.

Ahora que aprendió a crear y ejecutar aplicaciones Shiny, implemente la aplicación que acabamos de crear en Shinyapps.io como se explicó anteriormente o haga clic en publicar, que está presente en la esquina superior derecha de la ventana de la aplicación Shiny.

esperoque este tutorial de R Shiny te ayudó a aprender a crear y ejecutar una aplicación Shiny. Diviértete creando aplicaciones web interactivas y hermosas con R Shiny.

Si desea aprender programación en R y construir una carrera colorida en análisis de datos, consulte nuestro que viene con capacitación en vivo dirigida por un instructor y experiencia en proyectos de la vida real. Esta capacitación lo ayudará a comprender el análisis de datos y lo ayudará a dominar el tema.