Comment créer des applications Web interactives avec Shiny dans R

Comment Creer Des Applications Web Interactives Avec Shiny Dans R



Grâce au framework R Shiny, un bundle de RStudio, la création d'applications Web dynamiques avec R est relativement simple. L’avantage de Shiny est qu’il permet de mettre votre code R sur le web, le rendant ainsi plus accessible à un plus large éventail d’utilisateurs. Avec R Shiny, vous pouvez créer des rapports de données et des visuels très puissants qui permettent à l'utilisateur d'analyser l'ensemble de données. Outre les composants Shiny, les éléments HTML peuvent être utilisés pour concevoir le contenu du programme. L'article d'aujourd'hui vous guide à travers le processus de création d'une application Web interactive utilisant le package Shiny de R. Pour cela, assurez-vous que « RStudio » est déjà installé.

Installez le package Shiny dans RStudio

Avant de passer à la création d'une application Web interactive dans RStudio, nous devrions déjà y avoir installé le package « Shiny ». Pour cela, vous devez développer le menu « Outils » de RStudio suivi de l'option « Installer les packages ». Dans la fenêtre ouverte, vous devez mentionner le package que vous souhaitez installer, c'est-à-dire « Shiny », et appuyer sur le bouton « Installer ». Le RStudio installera le package brillant dans la console RStudio.







Premiers pas avec Shiny dans R

Pour démarrer avec Shiny dans R, vous devez créer un nouveau fichier R en utilisant le menu « Fichier » situé en premier lieu de RStudio. Développez-le et utilisez l'option « Nouveau fichier » suivie de l'option « R Script ». Le fichier de script « sans titre » sera ouvert dans RStudio. Renommez-le en fichier « R » à l'emplacement souhaité.



Maintenant, chargez les packages nécessaires pour créer une application interactive dans R, c'est-à-dire en utilisant la fonction « bibliothèque » de R. Les instructions « if » sont utilisées pour installer les packages qui n'étaient pas installés précédemment. Le package Shiny est utilisé pour créer une interface interactive pour les applications Web ainsi que des visualisations graphiques. Le package « dplyr » est principalement utilisé pour faciliter la manipulation des données dans R en utilisant certaines fonctions utiles.



Enfin, le package « ggplot2 » est chargé comme une excellente source de visualisation de données en créant des graphiques personnalisés et puissants.





si ( ! exiger un espace de noms ( 'brillant' , tranquillement = VRAI ) ) {

installer. paquets ( 'brillant' )

}

si ( ! exiger un espace de noms ( 'dplyr' , tranquillement = VRAI ) ) {

installer. paquets ( 'dplyr' )

}

si ( ! exiger un espace de noms ( 'ggplot2' , tranquillement = VRAI ) ) {

installer. paquets ( 'ggplot2' )

}

bibliothèque ( brillant )

bibliothèque ( dplyr )

bibliothèque ( ggplot2 )

Créer un système de notation d'examen interactif

Dans ce didacticiel, nous allons créer un « système de notation d'examen » permettant aux étudiants d'obtenir leurs notes obtenues via les notes obtenues sur 100. Le script fourni est le composant « ui » d'une application Shiny qui spécifie la conception et l'apparence de le programme. Le programme génère une fluidPage, une conception adaptable qui peut être mise à l'échelle pour s'adapter à la fenêtre du navigateur.

Un « titlePanel » et un « sidebarLayout » sont les descendants du « fluidPage ». Le titre « Exam Grading System » du programme est tout ce qui est affiché dans le « titlePanel ». Un « sidebarPanel » et un « mainPanel » sont les deux sections que le « sidebarLayout » utilise pour diviser l'application. Une paire d'entrées est incluse dans le « sidebarPanel » : un « textAreaInput » nommé « score » plus un « actionButton » nommé « calculer ».



Un score par ligne peut être saisi pour chaque élève à l'aide du « textAreaInput ». L'évaluation des notes peut être lancée en utilisant « actionButton ». Une paire de sorties sont présentes dans le « mainPanel » : un « tableOutput » nommé « Result » plus un « plotOutput » nommé « ResultGraph ». Le « tableOutput » et le « plotOutput » présenteront les résultats du calcul sous la forme d’un graphique.

interface utilisateur <- page fluide (

panneau de titre ( 'Système de notation des examens' ) ,
barre latéraleMise en page (
panneau latéral (
texteAreaInput ( 'score' , « Entrez les scores des étudiants (un par ligne) : » , '' ) ,
bouton d'action ( 'calculer' , 'Calculons les notes' )
) ,
Panneau principal (
tableSortie ( 'Résultat' ) ,
plotOutput ( 'Graphique des résultats' )
) ) )

La méthode serveur établit la logique côté serveur de l’application. Les notes des étudiants sont initialement stockées dans une variable réactive nommée « data ». Pour cela, le bouton « calculer » est surveillé par la méthode « observerEvent » de R. Une fois le bouton déclenché, le code convertit initialement les valeurs saisies dans le champ de texte en valeurs numériques.

Chaque partition est suivie d'un saut de ligne utilisant le « \n » pour saisir une nouvelle partition à la ligne suivante. La méthode place le score qu'elle trouve dans la variable « données ». Si un utilisateur n'a saisi aucun score, la méthode affiche un message avec une erreur.

serveur <- fonction ( entrée sortie ) {

données <- réactifVal ( NUL )

observerEvent ( entrée$calculer, {

score <- comme. numérique ( désinscrire ( strsplit ( entrée$score, ' \n ' ) ) )

si ( longueur ( score ) > 0 ) {

données ( score )

} autre {

données ( NUL )

showModal ( modalDialog (

titre = 'Erreur' ,

« Erreur : veuillez ajouter de la valeur ! » ,

facileFermer = VRAI

) )

}

} )

Deux sorties, « output$Result » et « output$ResultGraph », sont spécifiées pour afficher les notes des étudiants et les notes obtenues. La méthode dynamique renderTable() produit un tableau de données des notes et des notes des tests de l'étudiant qui est étiqueté comme « output$Result ». La méthode renderPlot(), qui est également réactive, génère un graphique à barres pour les notes des étudiants et l'enregistre de la même manière dans la sortie « output$ResultGraph ».

Ils seront donc revus à chaque mise à jour des données d’entrée. L'expression if (!is.null(data())) détermine si les données reçues sont nulles ou non. Le script de l'instruction « if » est exécuté s'il n'est pas vide. Un vecteur de scores pour les étudiants constitue les « données » d’entrée. Chaque élève reçoit une note basée sur son score en utilisant la méthode case_when(). Un bloc de données contenant les notes des étudiants et les résultats des tests est créé à l'aide de la méthode data.frame(). Les colonnes suivantes sont ajoutées au bloc de données : « Étudiant », « Score » et « Note ». La répartition des notes est compilée dans un tableau appelé « GradeCount » à l'aide de la méthode table().

sortie$Résultat <- table de rendu ( {

si ( ! est. nul ( données ( ) ) ) {

notes <- cas_quand (

données ( ) > 80 ~ 'UN' ,

données ( ) > 60 ~ 'B' ,

données ( ) > 40 ~ 'C' ,

données ( ) > 30 ~ 'D' ,

VRAI ~ 'F'

)

données. cadre ( Étudiant = 1 : longueur ( données ( ) ) , Score = données ( ) , Grade = notes )

}

} )

sortie$ResultGraph <- renduPlot ( {

si ( ! est. nul ( données ( ) ) ) {

notes <- cas_quand (

données ( ) > 80 ~ 'UN' ,

données ( ) > 60 ~ 'B' ,

données ( ) > 40 ~ 'C' ,

données ( ) > 30 ~ 'D' ,

VRAI ~ 'F'

)

Nombre de notes <- tableau ( notes )

Le graphique à barres est créé à l'aide de la bibliothèque « ggplot2 ». Count (le nombre total d'élèves ayant obtenu chaque note) et la colonne Note sont créés dans un DataFrame. Un graphique à barres avec les données « Grade » sur « l'axe des x » et les données « Count » sur « l'axe des y » est produit à l'aide de la méthode geom_bar(). L'option stat = « identity » indique à ggplot2 d'utiliser les données réelles sans aucune sorte de transformation. Un titre, une étiquette sur l'axe des x et une étiquette sur l'axe des y sont tous ajoutés via la méthode « laboratoires ». Les couleurs de la barre sont attribuées à l'aide de la méthode scale_fill_manual(). Les lignes de grille et les composants de superposition inutiles sont supprimés à l'aide de la méthode theme_minimal(). La méthode ShinyApp(ui, server) crée une application.

ggplot ( données = données. cadre ( Grade = des noms ( Nombre de notes ) , Compter = comme. numérique ( Nombre de notes ) ) ,
aes ( X = Note, et = Compter, remplir = Grade ) ) +
barre_géo ( statistique = 'identité' ) +
laboratoires ( titre = 'Répartition des notes' ,
X = 'Grade' ,
et = 'Compter' ) +
scale_fill_manual ( valeurs = c ( 'UN' = 'vert' , 'B' = 'violet' , 'C' = 'rose' ,
'D' = 'orange' , 'F' = 'rouge' ) ) +
thème_minimal ( )
}
} )
}
ShinyApp ( interface utilisateur, serveur )

Lors de l'exécution de ce code, nous avons obtenu une interface interactive dans laquelle nous avons ajouté quelques notes et cliqué sur le bouton « Calculons les notes ».

Le tableau contenant les scores et les notes des étudiants s'affiche, suivi du graphique à barres de la répartition des notes dans différentes couleurs.

Conclusion

Ce guide explique l'importance de l'utilisation du package Shiny dans le langage R via RStudio. Pour compléter notre explication, nous avons construit une application Web interactive pour le système de notation des étudiants dans le code R en utilisant le package « Shiny ».