Com crear aplicacions web interactives amb Shiny a R

Com Crear Aplicacions Web Interactives Amb Shiny A R



A causa del marc R Shiny, un paquet de RStudio, crear aplicacions web dinàmiques amb R és relativament fàcil. L'avantatge de Shiny és que permet posar el vostre codi R al web, fent-lo més accessible per a un ventall més ampli d'usuaris. Amb R Shiny, podeu crear informes de dades i visuals molt potents que permeten a l'usuari analitzar el conjunt de dades. Juntament amb els components Shiny, els elements HTML es poden utilitzar per dissenyar el contingut del programa. L'article d'avui us guiarà pel procés de construcció d'una aplicació web interactiva que empra el paquet Shiny de R. Per a això, assegureu-vos de tenir ja instal·lat 'RStudio'.

Instal·leu el paquet Shiny a RStudio

Abans d'avançar cap a la creació d'una aplicació web interactiva dins de RStudio, hauríem de tenir ja instal·lat el paquet 'Shiny'. Per a això, heu d'ampliar el menú 'Eines' de RStudio seguit de l'opció 'Instal·lar paquets'. A la finestra oberta, heu d'esmentar el paquet que voleu instal·lar, és a dir, 'brillant', i toqueu el botó 'Instal·lar'. RStudio instal·larà el paquet brillant a la consola RStudio.







Comenceu amb Shiny a R

Per començar amb Shiny a R, heu de crear un nou fitxer R mitjançant el menú 'Fitxer' situat al primer lloc de RStudio. Amplieu-lo i utilitzeu l'opció 'Fitxer nou' seguida de l'opció 'R Script'. El fitxer d'script 'sense títol' s'obrirà a RStudio. Canvieu-lo com a fitxer 'R' a la ubicació desitjada.



Ara, carregueu els paquets necessaris necessaris per construir una aplicació interactiva a R, és a dir, utilitzant la funció 'biblioteca' de R. Les sentències 'if' s'utilitzen per instal·lar els paquets que no estaven instal·lats anteriorment. El paquet Shiny s'utilitza per crear una interfície interactiva per a aplicacions web juntament amb algunes visualitzacions gràfiques. El paquet 'dplyr' s'utilitza principalment per facilitar la manipulació de dades a R mitjançant algunes funcions útils.



Finalment, el paquet 'ggplot2' es carrega com una gran font de visualització de dades mitjançant la creació de gràfics personalitzats i potents.





si ( ! requireNamespace ( 'brillant' , en silenci = VERITAT ) ) {

instal·lar. paquets ( 'brillant' )

}

si ( ! requireNamespace ( 'dplyr' , en silenci = VERITAT ) ) {

instal·lar. paquets ( 'dplyr' )

}

si ( ! requireNamespace ( 'ggplot2' , en silenci = VERITAT ) ) {

instal·lar. paquets ( 'ggplot2' )

}

biblioteca ( brillant )

biblioteca ( dplyr )

biblioteca ( ggplot2 )

Crear un sistema de qualificació d'exàmens interactiu

Dins d'aquest tutorial, crearem un 'Sistema de qualificació de l'examen' perquè els estudiants obtinguin les seves qualificacions a través de les notes que s'obtenen sobre 100. El guió proporcionat és el component 'ui' d'una aplicació Shiny que especifica el disseny i l'aspecte de el programa. El programa genera una fluidPage, un disseny adaptable que es pot escalar per ajustar-se a la finestra del navegador.

Un 'titlePanel' i un 'sidebarLayout' són la descendència de la 'fluidPage'. El títol 'Sistema de qualificació de l'examen' del programa és tot el que es mostra al 'titlePanel'. Un 'sidebarPanel' i un 'mainPanel' són les dues seccions en què el 'sidebarLayout' utilitza per dividir l'aplicació. S'inclouen un parell d'entrades al 'sidebarPanel': un 'textAreaInput' anomenat 'puntuació' més un 'actionButton' anomenat 'calculate'.



Es pot introduir una puntuació per línia per a cada estudiant mitjançant l''textAreaInput'. L'avaluació de la qualificació es pot iniciar mitjançant l'ús de 'actionButton'. Hi ha un parell de sortides al 'mainPanel': una 'tableOutput' anomenada 'Result' més una 'plotOutput' anomenada 'ResultGraph'. Tant el 'tableOutput' com el 'plotOutput' presentaran els resultats del càlcul en forma de gràfic.

ui <- fluidPage (

panell de títol ( 'Sistema de qualificació de l'examen' ) ,
sidebarLayout (
panell de la barra lateral (
textAreaInput ( 'puntuació' , 'Introdueix puntuacions per a estudiants (una per línia):' , '' ) ,
botó d'acció ( 'calcular' , 'Calculem les notes' )
) ,
panell principal (
tableOutput ( 'Resultat' ) ,
plotOutput ( 'Gràfic de resultats' )
) ) )

El mètode del servidor estableix la lògica del costat del servidor de l'aplicació. Les notes dels estudiants s'emmagatzemen inicialment en una variable reactiva anomenada 'dades'. Per a això, el botó 'Calcular' es supervisa mitjançant el mètode 'observeEvent' de R. Després d'activar el botó, el codi converteix inicialment els valors que s'introdueixen a l'entrada del camp de text en valors numèrics.

Cada puntuació va seguida d'un salt de línia utilitzant el '\n' per introduir una nova puntuació a la línia següent. El mètode col·loca qualsevol puntuació que trobi a la variable 'dades'. Si un usuari no ha introduït cap puntuació, el mètode mostra un missatge amb un error.

servidor <- funció ( d'entrada i sortida ) {

dades <- reactivaVal ( NUL )

observar l'esdeveniment ( entrada$calcula, {

puntuació <- com. numèric ( desllista ( strsplit ( entrada$puntuació, ' \n ' ) ) )

si ( llargada ( puntuació ) > 0 ) {

dades ( puntuació )

} altra cosa {

dades ( NUL )

showModal ( modalDialog (

títol = 'Error' ,

'Error: si us plau, afegeix valor!' ,

easyClose = VERITAT

) )

}

} )

S'especifiquen dues sortides, 'output$Result' més 'output$ResultGraph', per mostrar les notes de l'estudiant i les qualificacions aconseguides. El mètode dinàmic renderTable() produeix una taula de dades de les notes i qualificacions de l'examen de l'estudiant que s'etiqueta com a 'output$Result'. El mètode renderPlot(), que també és reactiu, genera un gràfic de barres per a les qualificacions dels estudiants i el desa a la sortida 'output$ResultGraph' de manera similar.

Per tant, es revisaran cada vegada que s'actualitzin les dades d'entrada. L'expressió if (!is.null(data())) determina si les dades que es reben són nul·les o no. L'script de la instrucció 'si' es realitza si no està buit. Un vector de puntuacions per als estudiants constitueix les 'dades' d'entrada. Cada estudiant rep una qualificació en funció de la seva puntuació mitjançant el mètode case_when(). Es crea un marc de dades que conté les qualificacions dels estudiants i les notes de les proves mitjançant el mètode data.frame(). Les columnes següents s'afegeixen al marc de dades: 'Estudiant', 'Puntuació' i 'Nota'. La distribució de notes es compila en una taula anomenada 'GradeCount' mitjançant el mètode table().

sortida$Resultat <- renderTable ( {

si ( ! és. nul ( dades ( ) ) ) {

graus <- cas_quan (

dades ( ) > 80 ~ 'A' ,

dades ( ) > 60 ~ 'B' ,

dades ( ) > 40 ~ 'C' ,

dades ( ) > 30 ~ 'D' ,

VERITAT ~ 'F'

)

dades. marc ( Estudiant = 1 : llargada ( dades ( ) ) , Puntuació = dades ( ) , Grau = graus )

}

} )

sortida$ResultGraph <- renderPlot ( {

si ( ! és. nul ( dades ( ) ) ) {

graus <- cas_quan (

dades ( ) > 80 ~ 'A' ,

dades ( ) > 60 ~ 'B' ,

dades ( ) > 40 ~ 'C' ,

dades ( ) > 30 ~ 'D' ,

VERITAT ~ 'F'

)

GradeCount <- taula ( graus )

El gràfic de barres es crea mitjançant la biblioteca 'ggplot2'. El recompte (el nombre total d'estudiants que han obtingut cada nota) i la columna Grau es creen en un DataFrame. Amb el mètode geom_bar() s'elabora un gràfic de barres amb les dades 'Grau' a l''eix x' i les dades 'Recompte' a l''eix y'. L'opció stat = 'identitat' indica a ggplot2 que utilitzi les dades reals sense cap tipus de transformació. Un títol, una etiqueta de l'eix X i una etiqueta de l'eix Y s'afegeixen mitjançant el mètode 'laboratoris'. Els colors de la barra s'assignen mitjançant el mètode scale_fill_manual(). Les línies de quadrícula i els components de superposició innecessaris s'eliminen mitjançant el mètode theme_minimal(). El mètode shinyApp (ui, server) crea una aplicació.

ggplot ( dades = dades. marc ( Grau = noms ( GradeCount ) , Comte = com. numèric ( GradeCount ) ) ,
aes ( x = Grade, i = Comptar, omplir = Grau ) ) +
geom_bar ( estat = 'identitat' ) +
laboratoris ( títol = 'Distribució de qualificacions' ,
x = 'Grau' ,
i = 'Compte' ) +
manual_emplenat_escala ( valors = c ( 'A' = 'verd' , 'B' = 'porpra' , 'C' = 'rosa' ,
'D' = 'taronja' , 'F' = 'vermell' ) ) +
tema_mínim ( )
}
} )
}
shinyApp ( ui, servidor )

En executar aquest codi, vam obtenir una interfície interactiva on vam afegir algunes notes i vam fer clic al botó 'Calculem les qualificacions'.

Es mostra la taula que conté les puntuacions i qualificacions dels estudiants, seguida del gràfic de barres de la distribució de notes en diferents colors.

Conclusió

Aquesta guia explica la importància de l'ús del paquet Shiny en llenguatge R a través de RStudio. Per complementar la nostra explicació, hem construït una aplicació web interactiva per al sistema de qualificació dels estudiants al codi R utilitzant el paquet 'Shiny'.