Πώς να δημιουργήσετε διαδραστικές εφαρμογές Ιστού με το Shiny στο R

Pos Na Demiourgesete Diadrastikes Epharmoges Istou Me To Shiny Sto R



Λόγω του πλαισίου R Shiny, ένα πακέτο από το RStudio, η δημιουργία δυναμικών εφαρμογών ιστού με το R είναι σχετικά εύκολη. Το πλεονέκτημα του Shiny είναι ότι καθιστά δυνατή την τοποθέτηση του κώδικα R στον ιστό, καθιστώντας τον πιο προσιτό σε ένα ευρύτερο φάσμα χρηστών. Με το R Shiny, μπορείτε να δημιουργήσετε πολύ ισχυρές αναφορές δεδομένων και γραφικά που επιτρέπουν στον χρήστη να αναλύει το σύνολο δεδομένων. Μαζί με τα στοιχεία Shiny, τα στοιχεία HTML μπορούν να χρησιμοποιηθούν για το σχεδιασμό του περιεχομένου του προγράμματος. Το σημερινό άρθρο σας καθοδηγεί στη διαδικασία κατασκευής μιας διαδραστικής εφαρμογής Web που χρησιμοποιεί το πακέτο R's Shiny. Για αυτό, βεβαιωθείτε ότι έχετε ήδη εγκαταστήσει το 'RStudio'.

Εγκαταστήστε το Shiny Package στο RStudio

Πριν προχωρήσουμε στη δημιουργία μιας διαδραστικής διαδικτυακής εφαρμογής μέσα στο RStudio, θα πρέπει να έχουμε ήδη εγκατεστημένο το πακέτο «Shiny». Για αυτό, πρέπει να επεκτείνετε το μενού 'Εργαλεία' του RStudio ακολουθούμενο από την επιλογή 'Εγκατάσταση πακέτων'. Μέσα στο παράθυρο που ανοίγει, πρέπει να αναφέρετε το πακέτο που θέλετε να εγκαταστήσετε, δηλαδή 'γυαλιστερό' και να πατήσετε το κουμπί 'Εγκατάσταση'. Το RStudio θα εγκαταστήσει το γυαλιστερό πακέτο στην κονσόλα RStudio.







Ξεκινήστε με το Shiny στο R

Για να ξεκινήσετε με το Shiny in R, πρέπει να δημιουργήσετε ένα νέο αρχείο R χρησιμοποιώντας το μενού 'Αρχείο' που βρίσκεται στην πρώτη θέση του RStudio. Αναπτύξτε το και χρησιμοποιήστε την επιλογή 'Νέο αρχείο' ακολουθούμενη από την επιλογή 'R Script'. Το αρχείο σεναρίου 'χωρίς τίτλο' θα ανοίξει στο RStudio. Μετονομάστε το σε αρχείο 'R' στην τοποθεσία που θέλετε.



Τώρα, φορτώστε τα απαραίτητα πακέτα που απαιτούνται για τη δημιουργία μιας διαδραστικής εφαρμογής στο R, δηλαδή χρησιμοποιώντας τη λειτουργία 'βιβλιοθήκη' του R. Οι δηλώσεις 'if' χρησιμοποιούνται για την εγκατάσταση των πακέτων που δεν είχαν εγκατασταθεί προηγουμένως. Το πακέτο Shiny χρησιμοποιείται για τη δημιουργία μιας διαδραστικής διεπαφής για εφαρμογές web μαζί με ορισμένες γραφικές απεικονίσεις. Το πακέτο 'dplyr' χρησιμοποιείται κυρίως για να διευκολύνει τον χειρισμό δεδομένων στο R χρησιμοποιώντας ορισμένες χρήσιμες λειτουργίες.



Τέλος, το πακέτο «ggplot2» φορτώνεται ως μια εξαιρετική πηγή οπτικοποίησης δεδομένων δημιουργώντας προσαρμοσμένα και ισχυρά γραφήματα.





αν ( ! απαιτείται χώρος ονομάτων ( 'λαμπερός' , αθόρυβα = ΑΛΗΘΗΣ ) ) {

εγκαθιστώ. πακέτα ( 'λαμπερός' )

}

αν ( ! απαιτείται χώρος ονομάτων ( 'dplyr' , αθόρυβα = ΑΛΗΘΗΣ ) ) {

εγκαθιστώ. πακέτα ( 'dplyr' )

}

αν ( ! απαιτείται χώρος ονομάτων ( 'ggplot2' , αθόρυβα = ΑΛΗΘΗΣ ) ) {

εγκαθιστώ. πακέτα ( 'ggplot2' )

}

βιβλιοθήκη ( λαμπερός )

βιβλιοθήκη ( dplyr )

βιβλιοθήκη ( ggplot2 )

Δημιουργήστε ένα Διαδραστικό Σύστημα Βαθμολόγησης Εξετάσεων

Μέσα σε αυτό το σεμινάριο, θα δημιουργήσουμε ένα 'Σύστημα Βαθμολόγησης Εξετάσεων' για τους μαθητές να λάβουν τους βαθμούς που πέτυχαν μέσω των βαθμών που λαμβάνονται από 100. Το παρεχόμενο σενάριο είναι το στοιχείο 'ui' μιας εφαρμογής Shiny που καθορίζει τη σχεδίαση και την εμφάνιση του το πρόγραμμα. Το πρόγραμμα δημιουργεί μια fluidPage, μια προσαρμόσιμη σχεδίαση που μπορεί να κλιμακωθεί για προσαρμογή στο παράθυρο του προγράμματος περιήγησης.

Ένα 'titlePanel' και ένα 'sidebarLayout' είναι το απόγονο του 'fluidPage'. Ο τίτλος του προγράμματος 'Exam Grading System' είναι το μόνο που εμφανίζεται στο 'titlePanel'. Ένα 'sidebarPanel' και ένα 'mainPanel' είναι οι δύο ενότητες που χρησιμοποιεί το 'sidebarLayout' για να χωρίσει την εφαρμογή σε. Ένα ζεύγος εισόδων περιλαμβάνονται στο 'sidebarPanel': ένα 'textAreaInput' με το όνομα 'score' συν ένα 'actionButton' με το όνομα 'calculate'.



Μια βαθμολογία ανά γραμμή μπορεί να εισαχθεί για κάθε μαθητή χρησιμοποιώντας το 'textAreaInput'. Η αξιολόγηση του βαθμού μπορεί να ξεκινήσει με τη χρήση του 'actionButton'. Ένα ζεύγος εξόδων υπάρχει στο 'mainPanel': ένα 'tableOutput' με το όνομα 'Result' συν ένα 'plotOutput' με το όνομα 'ResultGraph'. Τόσο το 'tableOutput' και το 'plotOutput' θα παρουσιάσουν τα ευρήματα του υπολογισμού με τη μορφή γραφήματος.

UI <- fluidPage (

titlePanel ( «Σύστημα Βαθμολόγησης Εξετάσεων» ) ,
sidebarLayout (
Πίνακας πλαϊνής γραμμής (
textAreaInput ( 'σκορ' , 'Εισαγωγή βαθμολογιών για μαθητές (ένα ανά γραμμή):' , '' ) ,
κουμπί δράσης ( 'υπολογίζω' , 'Ας υπολογίσουμε τους βαθμούς' )
) ,
κύριος πίνακας (
Έξοδος πίνακα ( 'Αποτέλεσμα' ) ,
plotOutput ( 'Γράφημα αποτελεσμάτων' )
) ) )

Η μέθοδος διακομιστή καθορίζει τη λογική από την πλευρά του διακομιστή της εφαρμογής. Οι βαθμοί για τους μαθητές αποθηκεύονται αρχικά σε μια αντιδραστική μεταβλητή που ονομάζεται 'data'. Για αυτό, το κουμπί 'υπολογισμός' παρακολουθείται με τη μέθοδο 'observeEvent' του R. Μετά την ενεργοποίηση του κουμπιού, ο κωδικός μετατρέπει αρχικά τις τιμές που εισάγονται στην εισαγωγή του πεδίου κειμένου σε αριθμητικές τιμές.

Κάθε βαθμολογία ακολουθείται από μια αλλαγή γραμμής χρησιμοποιώντας το '\n' για να εισάγετε μια νέα βαθμολογία στην αμέσως επόμενη γραμμή. Η μέθοδος τοποθετεί όποια βαθμολογία βρει στη μεταβλητή «δεδομένα». Εάν ένας χρήστης δεν έχει είσοδο χωρίς βαθμολογία, η μέθοδος εμφανίζει ένα μήνυμα με σφάλμα.

υπηρέτης <- λειτουργία ( εισόδου-εξόδου ) {

δεδομένα <- reactiveVal ( ΜΗΔΕΝΙΚΟ )

παρατηρώ Εκδήλωση ( input$υπολογισμός, {

σκορ <- όπως και. αριθμητικός ( κατάργηση λίστας ( strsplit ( input$score, ' \n ' ) ) )

αν ( μήκος ( σκορ ) > 0 ) {

δεδομένα ( σκορ )

} αλλού {

δεδομένα ( ΜΗΔΕΝΙΚΟ )

showModal ( modalDialog (

τίτλος = 'Λάθος' ,

'Σφάλμα: Προσθέστε αξία!' ,

easyClose = ΑΛΗΘΗΣ

) )

}

} )

Δύο έξοδοι, 'output$Result' συν 'output$ResultGraph', καθορίζονται για να εμφανίζουν τους βαθμούς και τους βαθμούς του μαθητή. Η δυναμική μέθοδος renderTable() παράγει έναν πίνακα δεδομένων των βαθμών και των βαθμών του τεστ του μαθητή που φέρει την ετικέτα 'output$Result'. Η μέθοδος renderPlot(), η οποία είναι επίσης αντιδραστική, δημιουργεί ένα ραβδωτό γράφημα για τους βαθμούς των μαθητών και το αποθηκεύει στην έξοδο 'output$ResultGraph' ομοίως.

Επομένως, θα εξετάζονται κάθε φορά που ενημερώνονται τα δεδομένα εισόδου. Η έκφραση if (!is.null(data())) καθορίζει εάν τα δεδομένα που λαμβάνονται είναι μηδενικά. Το σενάριο της δήλωσης 'if' εκτελείται εάν δεν είναι κενό. Ένα διάνυσμα βαθμολογιών για μαθητές συνθέτει τα εισαγόμενα «δεδομένα». Σε κάθε μαθητή δίνεται ένας βαθμός με βάση τη βαθμολογία του χρησιμοποιώντας τη μέθοδο case_when(). Ένα πλαίσιο δεδομένων που περιέχει τους βαθμούς των μαθητών και τους βαθμούς δοκιμής δημιουργείται χρησιμοποιώντας τη μέθοδο data.frame(). Οι ακόλουθες στήλες προστίθενται στο πλαίσιο δεδομένων: «Μαθητής», «Βαθμολογία» και «Βαθμός». Η κατανομή βαθμών μεταγλωττίζεται σε έναν πίνακα που ονομάζεται 'GradeCount' χρησιμοποιώντας τη μέθοδο table().

output$Result <- renderTable ( {

αν ( ! είναι. μηδενικό ( δεδομένα ( ) ) ) {

βαθμοί <- περίπτωση_όταν (

δεδομένα ( ) > 80 ~ 'ΕΝΑ' ,

δεδομένα ( ) > 60 ~ 'ΣΙ' ,

δεδομένα ( ) > 40 ~ 'ΝΤΟ' ,

δεδομένα ( ) > 30 ~ 'ΡΕ' ,

ΑΛΗΘΗΣ ~ 'ΦΑ'

)

δεδομένα. πλαίσιο ( Μαθητης σχολειου = 1 : μήκος ( δεδομένα ( ) ) , Βαθμολογία = δεδομένα ( ) , Βαθμός = βαθμοί )

}

} )

output$ResultGraph <- renderPlot ( {

αν ( ! είναι. μηδενικό ( δεδομένα ( ) ) ) {

βαθμοί <- περίπτωση_όταν (

δεδομένα ( ) > 80 ~ 'ΕΝΑ' ,

δεδομένα ( ) > 60 ~ 'ΣΙ' ,

δεδομένα ( ) > 40 ~ 'ΝΤΟ' ,

δεδομένα ( ) > 30 ~ 'ΡΕ' ,

ΑΛΗΘΗΣ ~ 'ΦΑ'

)

Καταμέτρηση Βαθμών <- τραπέζι ( βαθμοί )

Το γράφημα ράβδων δημιουργείται χρησιμοποιώντας τη βιβλιοθήκη 'ggplot2'. Το Count (ο συνολικός αριθμός των μαθητών που έλαβαν κάθε βαθμό) και η στήλη Βαθμός δημιουργούνται σε ένα DataFrame. Ένα γράφημα ράβδων με τα δεδομένα 'Βαθμός' στον 'άξονα x' και τα δεδομένα 'Αριθμός' στον 'άξονα y' παράγεται χρησιμοποιώντας τη μέθοδο geom_bar(). Η επιλογή stat = 'identity' δίνει εντολή στο ggplot2 να χρησιμοποιήσει τα πραγματικά δεδομένα χωρίς κανένα είδος μετασχηματισμού. Ένας τίτλος, μια ετικέτα άξονα x και μια ετικέτα άξονα y προστίθενται όλα μέσω της μεθόδου 'labs'. Τα χρώματα της γραμμής εκχωρούνται χρησιμοποιώντας τη μέθοδο scale_fill_manual(). Οι περιττές γραμμές πλέγματος και τα στοιχεία επικάλυψης αφαιρούνται χρησιμοποιώντας τη μέθοδο theme_minimal(). Η μέθοδος shinyApp(ui, server) δημιουργεί μια εφαρμογή.

ggplot ( δεδομένα = δεδομένα. πλαίσιο ( Βαθμός = ονόματα ( Καταμέτρηση Βαθμών ) , Μετρώ = όπως και. αριθμητικός ( Καταμέτρηση Βαθμών ) ) ,
aes ( Χ = Βαθμός, και = Μετρήστε, γεμίστε = Βαθμός ) ) +
geom_bar ( stat = 'Ταυτότητα' ) +
εργαστήρια ( τίτλος = 'Κατανομή βαθμών' ,
Χ = 'Βαθμός' ,
και = 'Μετρώ' ) +
scale_fill_manual ( αξίες = ντο ( 'ΕΝΑ' = 'πράσινος' , 'ΣΙ' = 'μωβ' , 'ΝΤΟ' = 'ροζ' ,
'ΡΕ' = 'πορτοκάλι' , 'ΦΑ' = 'το κόκκινο' ) ) +
θέμα_ελάχιστο ( )
}
} )
}
shinyApp ( Ui, διακομιστής )

Με την εκτέλεση αυτού του κώδικα, αποκτήσαμε μια διαδραστική διεπαφή όπου προσθέσαμε μερικούς βαθμούς και κάνουμε κλικ στο κουμπί 'Ας Υπολογίσουμε Βαθμούς'.

Εμφανίζεται ο πίνακας που περιέχει τις βαθμολογίες και τους βαθμούς των μαθητών και ακολουθεί το γράφημα ράβδων της κατανομής βαθμών σε διάφορα χρώματα.

συμπέρασμα

Αυτός ο οδηγός εξηγεί τη σημασία της χρήσης του πακέτου Shiny στη γλώσσα R μέσω του RStudio. Για να συμπληρώσουμε την εξήγησή μας, κατασκευάσαμε μια διαδραστική διαδικτυακή εφαρμογή για το σύστημα βαθμολόγησης των μαθητών στον κώδικα R, χρησιμοποιώντας το πακέτο «Shiny».