Cómo crear aplicaciones web interactivas con Shiny en R

Como Crear Aplicaciones Web Interactivas Con Shiny En R



Gracias al marco R Shiny, un paquete de RStudio, crear aplicaciones web dinámicas con R es relativamente fácil. El beneficio de Shiny es que permite colocar su código R en la web, haciéndolo más accesible para una gama más amplia de usuarios. Con R Shiny, puede crear informes de datos y elementos visuales muy potentes que permiten al usuario analizar el conjunto de datos. Junto con los componentes Shiny, los elementos HTML se pueden utilizar para diseñar el contenido del programa. El artículo de hoy lo guía a través del proceso de construcción de una aplicación web interactiva que emplea el paquete Shiny de R. Para ello, asegúrese de tener ya instalado 'RStudio'.

Instale el paquete Shiny en RStudio

Antes de pasar a crear una aplicación web interactiva dentro de RStudio, deberíamos tener el paquete 'Shiny' ya instalado. Para ello, debe expandir el menú 'Herramientas' de RStudio seguido de la opción 'Instalar paquetes'. Dentro de la ventana abierta, debes mencionar el paquete que deseas instalar, es decir, 'brillante', y tocar el botón 'Instalar'. RStudio instalará el paquete brillante en la consola RStudio.







Comience con Shiny en R

Para comenzar con Shiny en R, debe crear un nuevo archivo R usando el menú 'Archivo' ubicado en el primer lugar de RStudio. Amplíelo y use la opción 'Nuevo archivo' seguida de la opción 'R Script'. El archivo de script 'sin título' se abrirá en RStudio. Cambie el nombre a un archivo 'R' en la ubicación deseada.



Ahora, cargue los paquetes necesarios para crear una aplicación interactiva en R, es decir, utilizando la función 'biblioteca' de R. Las declaraciones 'if' se utilizan para instalar los paquetes que no se instalaron previamente. El paquete Shiny se utiliza para crear una interfaz interactiva para aplicaciones web junto con algunas visualizaciones gráficas. El paquete 'dplyr' se utiliza principalmente para facilitar la manipulación de datos en R mediante la utilización de algunas funciones útiles.



Por último, el paquete “ggplot2” se carga como una gran fuente de visualización de datos mediante la creación de gráficos potentes y personalizados.





si ( ! requerir espacio de nombres ( 'brillante' , en silencio = VERDADERO ) ) {

instalar. paquetes ( 'brillante' )

}

si ( ! requerir espacio de nombres ( 'dplyr' , en silencio = VERDADERO ) ) {

instalar. paquetes ( 'dplyr' )

}

si ( ! requerir espacio de nombres ( 'ggplot2' , en silencio = VERDADERO ) ) {

instalar. paquetes ( 'ggplot2' )

}

biblioteca ( brillante )

biblioteca ( dplyr )

biblioteca ( ggplot2 )

Cree un sistema interactivo de calificación de exámenes

En este tutorial, crearemos un 'Sistema de calificación de exámenes' para que los estudiantes obtengan las calificaciones obtenidas a través de las calificaciones que se obtienen sobre 100. El script proporcionado es el componente 'ui' de una aplicación Shiny que especifica el diseño y la apariencia de el programa. El programa genera una página fluida, un diseño adaptable que se puede escalar para ajustarse a la ventana del navegador.

Un 'titlePanel' y un 'sidebarLayout' son descendientes de 'fluidPage'. El título 'Sistema de calificación de exámenes' del programa es todo lo que se muestra en el 'panel de títulos'. Un 'sidebarPanel' y un 'mainPanel' son las dos secciones que utiliza 'sidebarLayout' para dividir la aplicación. Se incluyen un par de entradas en el “sidebarPanel”: un “textAreaInput” llamado “score” más un “actionButton” llamado “calculate”.



Se puede ingresar una puntuación por línea para cada estudiante usando “textAreaInput”. La evaluación de calificaciones se puede iniciar mediante el uso del 'botón de acción'. Un par de salidas están presentes en el 'panel principal': una 'tableOutput' llamada 'Resultado' más una 'plotOutput' llamada 'ResultGraph'. Tanto 'tableOutput' como 'plotOutput' presentarán los resultados del cálculo en forma de gráfico.

interfaz de usuario <- página fluida (

títuloPanel ( 'Sistema de calificación de exámenes' ) ,
barra lateralDiseño (
barra lateralPanel (
entrada de área de texto ( 'puntaje' , 'Ingrese puntuaciones para estudiantes (una por línea):' , '' ) ,
botón de acción ( 'calcular' , 'Calculemos las calificaciones' )
    ) ,
panel principal (
tablaSalida ( 'Resultado' ) ,
tramaSalida ( 'Gráfico de resultados' )
    ) )   )

El método del servidor establece la lógica del lado del servidor de la aplicación. Las calificaciones de los estudiantes se almacenan inicialmente en una variable reactiva denominada 'datos'. Para esto, el botón 'calcular' es monitoreado por el método 'observeEvent' de R. Después de activar el botón, el código inicialmente convierte los valores que se ingresan en el campo de texto en valores numéricos.

Cada partitura va seguida de un salto de línea utilizando “\n” para ingresar una nueva partitura en la línea siguiente. El método coloca cualquier puntuación que encuentre en la variable 'datos'. Si un usuario no ha ingresado ninguna puntuación, el método muestra un mensaje con un error.

servidor <- función ( de entrada y salida ) {

datos <- valor reactivo ( NULO )

observarEvento ( entrada$calcular, {

puntaje <- como. numérico ( eliminar de la lista ( división ( entrada $ puntuación, ' \norte ' ) ) )

    si ( longitud ( puntaje ) > 0 ) {

datos ( puntaje )

  } demás {

datos ( NULO )

mostrarModal ( Diálogo modal (

título = 'Error' ,

      'Error: ¡Agregue valor!' ,

fácilCerrar = VERDADERO

    ) )

  }

} )

Se especifican dos salidas, “salida$Resultado” más “salida$ResultGraph”, para mostrar las calificaciones de los estudiantes y las calificaciones obtenidas. El método dinámico renderTable() produce una tabla de datos de las notas y calificaciones de los exámenes del estudiante que está etiquetada como 'salida$Resultado'. El método renderPlot(), que también es reactivo, genera un gráfico de barras para las calificaciones de los estudiantes y lo guarda en la salida “output$ResultGraph” de manera similar.

Por lo tanto, serán revisados ​​cada vez que se actualicen los datos de entrada. La expresión if (!is.null(data())) determina si los datos que se reciben son nulos o no. El script de la declaración 'if' se ejecuta si no está vacío. Un vector de puntuaciones de los estudiantes constituye los “datos” de entrada. Cada estudiante recibe una calificación basada en su puntuación utilizando el método case_when(). Se crea un marco de datos que contiene las calificaciones de los estudiantes y las calificaciones de los exámenes utilizando el método data.frame(). Las siguientes columnas se agregan al marco de datos: 'Estudiante', 'Puntuación' y 'Calificación'. La distribución de calificaciones se compila en una tabla llamada 'GradeCount' utilizando el método table().

salida$Resultado <- renderizar tabla ( {

  si ( ! es. nulo ( datos ( ) ) ) {

Los grados <- caso_cuando (

datos ( ) > 80 ~ 'A' ,

datos ( ) > 60 ~ 'B' ,

datos ( ) > 40 ~ 'C' ,

datos ( ) > 30 ~ 'D' ,

      VERDADERO ~ 'F'

    )

datos. marco ( Alumno = 1 : longitud ( datos ( ) ) , Puntaje = datos ( ) , Calificación = Los grados )

    }

  } )

salida$ResultGraph <- renderizarTrama ( {

  si ( ! es. nulo ( datos ( ) ) ) {

Los grados <- caso_cuando (

datos ( ) > 80 ~ 'A' ,

datos ( ) > 60 ~ 'B' ,

datos ( ) > 40 ~ 'C' ,

datos ( ) > 30 ~ 'D' ,

      VERDADERO ~ 'F'

    )

Recuento de calificaciones <- mesa ( Los grados )

El gráfico de barras se crea utilizando la biblioteca 'ggplot2'. Count (el número total de estudiantes que obtuvieron cada calificación) y la columna Grade se crean en un DataFrame. Se produce un gráfico de barras con los datos de 'Calificación' en el 'eje x' y los datos de 'Recuento' en el 'eje y' utilizando el método geom_bar(). La opción stat = “identity” le indica a ggplot2 que utilice los datos reales sin ningún tipo de transformación. Un título, una etiqueta del eje x y una etiqueta del eje y se agregan mediante el método 'labs'. Los colores de la barra se asignan mediante el método scale_fill_manual(). Las líneas de cuadrícula y los componentes superpuestos innecesarios se eliminan utilizando el método theme_minimal(). El método shinyApp(ui, server) crea una aplicación.

ggplot ( datos = datos. marco ( Calificación = nombres ( Recuento de calificaciones ) , Contar = como. numérico ( Recuento de calificaciones ) ) ,
aes ( X = Grade, y = contar, llenar = Calificación ) ) +
barra_geom ( estadística = 'identidad' ) +
laboratorios ( título = 'Distribución de calificaciones' ,
X = 'Calificación' ,
             y = 'Contar' ) +
escala_relleno_manual ( valores = C ( 'A' = 'verde' , 'B' = 'púrpura' , 'C' = 'rosa' ,
                                      'D' = 'naranja' , 'F' = 'rojo' ) ) +
tema_minimal ( )
    }
  } )
}
brillanteApp ( interfaz de usuario, servidor )

Al ejecutar este código, obtuvimos una interfaz interactiva donde agregamos algunas marcas e hicimos clic en el botón 'Calculemos calificaciones'.

Se muestra la tabla que contiene los puntajes y calificaciones de los estudiantes, seguida del gráfico de barras de la distribución de calificaciones en diferentes colores.

Conclusión

Esta guía explica la importancia del uso del paquete Shiny en el lenguaje R a través de RStudio. Para complementar nuestra explicación, construimos una aplicación web interactiva para el sistema de calificación de los estudiantes en el código R utilizando el paquete 'Shiny'.