So erstellen Sie interaktive Web-Apps mit Shiny in R

So Erstellen Sie Interaktive Web Apps Mit Shiny In R



Dank des R Shiny-Frameworks, einem Bundle von RStudio, ist die Erstellung dynamischer Web-Apps mit R relativ einfach. Der Vorteil von Shiny besteht darin, dass es die Möglichkeit bietet, Ihren R-Code ins Internet zu stellen und ihn so einem breiteren Benutzerkreis zugänglicher zu machen. Mit R Shiny können Sie sehr aussagekräftige Datenberichte und Visuals erstellen, die es dem Benutzer ermöglichen, den Datensatz zu analysieren. Zusammen mit Shiny-Komponenten können die HTML-Elemente zur Gestaltung des Programminhalts verwendet werden. Der heutige Artikel führt Sie durch den Prozess der Erstellung einer interaktiven Webanwendung unter Verwendung des Shiny-Pakets von R. Stellen Sie dazu sicher, dass „RStudio“ bereits installiert ist.

Installieren Sie das Shiny-Paket in RStudio

Bevor wir mit der Erstellung einer interaktiven Webanwendung in RStudio beginnen, sollten wir das „Shiny“-Paket bereits darin installiert haben. Dazu müssen Sie das Menü „Extras“ des RStudios erweitern und anschließend auf die Option „Pakete installieren“ klicken. Im geöffneten Fenster müssen Sie das Paket angeben, das Sie installieren möchten, z. B. „shiny“, und auf die Schaltfläche „Installieren“ tippen. Das RStudio installiert das Shiny-Paket in der RStudio-Konsole.







Beginnen Sie mit Shiny in R

Um mit Shiny in R zu beginnen, müssen Sie über das Menü „Datei“ an der ersten Stelle von RStudio eine neue R-Datei erstellen. Erweitern Sie es und verwenden Sie die Option „Neue Datei“, gefolgt von der Option „R-Skript“. Die „unbenannte“ Skriptdatei wird in RStudio geöffnet. Benennen Sie es am gewünschten Speicherort in eine „R“-Datei um.



Laden Sie nun die notwendigen Pakete, die zum Erstellen einer interaktiven Anwendung in R erforderlich sind, d. h. mithilfe der „Bibliothek“-Funktion von R. Die „if“-Anweisungen werden verwendet, um die Pakete zu installieren, die zuvor nicht installiert wurden. Das Shiny-Paket wird verwendet, um eine interaktive Schnittstelle für Webanwendungen zusammen mit einigen grafischen Visualisierungen zu erstellen. Das Paket „dplyr“ wird hauptsächlich verwendet, um die Datenmanipulation in R durch die Nutzung einiger nützlicher Funktionen zu erleichtern.



Schließlich wird das Paket „ggplot2“ als großartige Quelle für die Datenvisualisierung geladen, indem es benutzerdefinierte und leistungsstarke Diagramme erstellt.





Wenn ( ! requireNamespace ( 'glänzend' , ruhig = WAHR ) ) {

Installieren. Pakete ( 'glänzend' )

}

Wenn ( ! requireNamespace ( „dplyr“ , ruhig = WAHR ) ) {

Installieren. Pakete ( „dplyr“ )

}

Wenn ( ! requireNamespace ( „ggplot2“ , ruhig = WAHR ) ) {

Installieren. Pakete ( „ggplot2“ )

}

Bibliothek ( glänzend )

Bibliothek ( dplyr )

Bibliothek ( ggplot2 )

Erstellen Sie ein interaktives Prüfungsbewertungssystem

In diesem Tutorial erstellen wir ein „Prüfungsbewertungssystem“, mit dem die Schüler ihre erreichten Noten anhand der von 100 erzielten Noten erhalten können. Das bereitgestellte Skript ist die „UI“-Komponente einer Shiny-App, die das Design und Aussehen von festlegt das Programm. Das Programm generiert eine FluidPage, ein anpassbares Design, das skaliert werden kann, um es an das Browserfenster anzupassen.

Ein „titlePanel“ und ein „sidebarLayout“ sind die Nachkommen der „fluidPage“. Im „titlePanel“ wird lediglich der Titel „Exam Grading System“ des Programms angezeigt. Ein „sidebarPanel“ und ein „mainPanel“ sind die beiden Abschnitte, die das „sidebarLayout“ verwendet, um die Anwendung aufzuteilen. Im „sidebarPanel“ sind zwei Eingaben enthalten: ein „textAreaInput“ mit dem Namen „score“ und ein „actionButton“ mit dem Namen „calculate“.



Für jeden Schüler kann über den „textAreaInput“ eine Punktzahl pro Zeile eingegeben werden. Die Notenbewertung kann über den „actionButton“ gestartet werden. Im „mainPanel“ sind zwei Ausgaben vorhanden: ein „tableOutput“ mit dem Namen „Result“ und ein „plotOutput“ mit dem Namen „ResultGraph“. Sowohl „tableOutput“ als auch „plotOutput“ stellen die Ergebnisse der Berechnung in Form eines Diagramms dar.

ui <- FluidPage (

titlePanel ( „Prüfungsbewertungssystem“ ) ,
SeitenleisteLayout (
SeitenleistePanel (
textAreaInput ( 'Punktzahl' , „Geben Sie die Ergebnisse der Schüler ein (eine pro Zeile):“ , „“ ) ,
Aktionsknopf ( 'Berechnung' , „Lass uns Noten berechnen“ )
) ,
Hauptfeld (
Tabellenausgabe ( 'Ergebnis' ) ,
plotOutput ( „Ergebnisdiagramm“ )
) ) )

Die Servermethode legt die serverseitige Logik der Anwendung fest. Die Noten der Studierenden werden zunächst in einer reaktiven Variablen namens „data“ gespeichert. Hierzu wird der „Berechnen“-Button durch die „observeEvent“-Methode von R überwacht. Nach dem Auslösen des Buttons wandelt der Code zunächst die Werte, die in das Textfeld eingegeben werden, in numerische Werte um.

Auf jede Punktzahl folgt ein Zeilenumbruch mit dem „\n“, um in der nächsten Zeile eine neue Punktzahl einzugeben. Die Methode platziert die gefundene Punktzahl in der Variablen „data“. Wenn ein Benutzer keine Bewertung eingegeben hat, zeigt die Methode eine Fehlermeldung an.

Server <- Funktion ( Input-Output ) {

Daten <- reactiveVal ( NULL )

beobachtenEreignis ( Eingabe$berechnen, {

Punktzahl <- als. numerisch ( aufheben ( strsplit ( Eingabe$Score, ' \N ' ) ) )

Wenn ( Länge ( Punktzahl ) > 0 ) {

Daten ( Punktzahl )

} anders {

Daten ( NULL )

showModal ( modalDialog (

Titel = 'Fehler' ,

„Fehler: Bitte Wert hinzufügen!“ ,

easyClose = WAHR

) )

}

} )

Zwei Ausgaben, „output$Result“ plus „output$ResultGraph“, werden angegeben, um die Schülernoten und erzielten Noten anzuzeigen. Die dynamische Methode renderTable() erzeugt eine Datentabelle der Testnoten und -noten des Schülers, die als „output$Result“ gekennzeichnet ist. Die ebenfalls reaktive Methode renderPlot() generiert ein Balkendiagramm für die Noten der Schüler und speichert es ebenfalls in der Ausgabe „output$ResultGraph“.

Sie werden daher jedes Mal überprüft, wenn die Eingabedaten aktualisiert werden. Der Ausdruck if (!is.null(data())) bestimmt, ob die empfangenen Daten null sind oder nicht. Das Skript der „if“-Anweisung wird ausgeführt, wenn es nicht leer ist. Ein Vektor von Punktzahlen für Schüler bildet die Eingabedaten. Jeder Schüler erhält anhand seiner Punktzahl mithilfe der Methode case_when() eine Note. Mit der Methode data.frame() wird ein Datenrahmen erstellt, der die Noten und Prüfungsnoten der Schüler enthält. Dem Datenrahmen werden die folgenden Spalten hinzugefügt: „Student“, „Score“ und „Note“. Die Notenverteilung wird mithilfe der Methode table() in einer Tabelle namens „GradeCount“ zusammengestellt.

Ausgabe$Ergebnis <- renderTable ( {

Wenn ( ! Ist. Null ( Daten ( ) ) ) {

Noten <- case_when (

Daten ( ) > 80 ~ 'A' ,

Daten ( ) > 60 ~ 'B' ,

Daten ( ) > 40 ~ 'C' ,

Daten ( ) > 30 ~ 'D' ,

WAHR ~ 'F'

)

Daten. rahmen ( Student = 1 : Länge ( Daten ( ) ) , Punktzahl = Daten ( ) , Grad = Noten )

}

} )

Ausgabe$ResultGraph <- renderPlot ( {

Wenn ( ! Ist. Null ( Daten ( ) ) ) {

Noten <- case_when (

Daten ( ) > 80 ~ 'A' ,

Daten ( ) > 60 ~ 'B' ,

Daten ( ) > 40 ~ 'C' ,

Daten ( ) > 30 ~ 'D' ,

WAHR ~ 'F'

)

GradeCount <- Tisch ( Noten )

Das Balkendiagramm wird mit der Bibliothek „ggplot2“ erstellt. Count (die Gesamtzahl der Schüler, die jede Note erhalten haben) und die Spalte „Note“ werden in einem DataFrame erstellt. Mit der Methode geom_bar() wird ein Balkendiagramm mit den „Grade“-Daten auf der „x-Achse“ und den „Count“-Daten auf der „y-Achse“ erstellt. Die Option stat = „identity“ weist ggplot2 an, die tatsächlichen Daten ohne jegliche Transformation zu verwenden. Ein Titel, eine X-Achsen-Beschriftung und eine Y-Achsen-Beschriftung werden alle über die „Labs“-Methode hinzugefügt. Die Farben des Balkens werden mit der Methode „scale_fill_manual()“ zugewiesen. Unnötige Gitterlinien und Overlay-Komponenten werden mit der Methode theme_minimal() entfernt. Die Methode „shinyApp(ui, server)“ erstellt eine App.

ggplot ( Daten = Daten. rahmen ( Grad = Namen ( GradeCount ) , Zählen = als. numerisch ( GradeCount ) ) ,
aes ( X = Note und = Zählen, füllen = Grad ) ) +
geom_bar ( stat = 'Identität' ) +
Labore ( Titel = „Notenverteilung“ ,
X = 'Grad' ,
Und = 'Zählen' ) +
Scale_fill_manual ( Werte = C ( 'A' = 'Grün' , 'B' = 'lila' , 'C' = 'Rosa' ,
'D' = 'orange' , 'F' = 'Rot' ) ) +
theme_minimal ( )
}
} )
}
glänzendeApp ( Benutzeroberfläche, Server )

Beim Ausführen dieses Codes erhielten wir eine interaktive Oberfläche, in der wir einige Noten hinzufügten und auf die Schaltfläche „Noten berechnen“ klickten.

Die Tabelle mit den Noten und Noten der Schüler wird angezeigt, gefolgt vom Balkendiagramm der Notenverteilung in verschiedenen Farben.

Abschluss

In diesem Leitfaden wird die Bedeutung der Verwendung des Shiny-Pakets in der R-Sprache über RStudio erläutert. Um unsere Erklärung zu ergänzen, haben wir unter Verwendung des „Shiny“-Pakets eine interaktive Webanwendung für das Bewertungssystem der Schüler im R-Code erstellt.