Come creare app Web interattive con Shiny in R

Come Creare App Web Interattive Con Shiny In R



Grazie al framework R Shiny, un pacchetto di RStudio, la creazione di app Web dinamiche con R è relativamente semplice. Il vantaggio di Shiny è che rende possibile mettere il tuo codice R sul web, rendendolo più accessibile a una gamma più ampia di utenti. Con R Shiny puoi creare report di dati e immagini molto potenti che consentono all'utente di analizzare il set di dati. Insieme ai componenti Shiny, gli elementi HTML possono essere utilizzati per progettare il contenuto del programma. L'articolo di oggi ti guida attraverso il processo di costruzione di un'applicazione Web interattiva utilizzando il pacchetto Shiny di R. Per questo, assicurati di avere già installato 'RStudio'.

Installa il pacchetto Shiny in RStudio

Prima di passare alla creazione di un'applicazione web interattiva all'interno di RStudio, dovremmo avere già installato il pacchetto 'Shiny'. Per questo, è necessario espandere il menu 'Strumenti' di RStudio seguito dall'opzione 'Installa pacchetti'. Nella finestra aperta, devi menzionare il pacchetto che desideri installare, ovvero 'shiny', e toccare il pulsante 'Installa'. RStudio installerà il pacchetto brillante nella console RStudio.







Inizia con Shiny in R

Per iniziare con Shiny in R, è necessario creare un nuovo file R utilizzando il menu 'File' situato in primo luogo di RStudio. Espandilo e utilizza l'opzione 'Nuovo file' seguita dall'opzione 'R Script'. Il file di script 'senza titolo' verrà aperto in RStudio. Rinominalo come file 'R' nella posizione desiderata.



Ora carica i pacchetti necessari per costruire un'applicazione interattiva in R, cioè utilizzando la funzione “libreria” di R. Le istruzioni “if” servono per installare i pacchetti che non erano stati installati in precedenza. Il pacchetto Shiny viene utilizzato per creare un'interfaccia interattiva per applicazioni web insieme ad alcune visualizzazioni grafiche. Il pacchetto “dplyr” viene utilizzato principalmente per facilitare la manipolazione dei dati in R utilizzando alcune funzioni utili.



Infine, il pacchetto 'ggplot2' viene caricato come un'ottima fonte di visualizzazione dei dati creando grafici personalizzati e potenti.





Se ( ! requireNamespace ( 'brillante' , tranquillamente = VERO ) ) {

installare. Pacchetti ( 'brillante' )

}

Se ( ! requireNamespace ( 'dplir' , tranquillamente = VERO ) ) {

installare. Pacchetti ( 'dplir' )

}

Se ( ! requireNamespace ( 'ggplot2' , tranquillamente = VERO ) ) {

installare. Pacchetti ( 'ggplot2' )

}

biblioteca ( brillante )

biblioteca ( dplyr )

biblioteca ( ggplot2 )

Costruisci un sistema di valutazione degli esami interattivo

All'interno di questo tutorial, creeremo un 'Sistema di valutazione degli esami' per consentire agli studenti di ottenere i voti ottenuti tramite i voti ottenuti su 100. Lo script fornito è il componente 'ui' di un'app Shiny che specifica il design e l'aspetto di il programma. Il programma genera una fluidPage, un design adattabile che può essere ridimensionato per adattarsi alla finestra del browser.

Un “titlePanel” e un “sidebarLayout” sono i figli di “fluidPage”. Il titolo 'Exam Grading System' del programma è tutto ciò che viene visualizzato nel 'titlePanel'. Un 'sidebarPanel' e un 'mainPanel' sono le due sezioni in cui 'sidebarLayout' utilizza per dividere l'applicazione. Nel 'sidebarPanel' sono inclusi una coppia di input: un 'textAreaInput' denominato 'score' più un 'actionButton' denominato 'calculate'.



È possibile inserire un punteggio per riga per ogni studente utilizzando 'textAreaInput'. La valutazione del voto può essere avviata utilizzando “actionButton”. Nel 'mainPanel' sono presenti una coppia di output: un 'tableOutput' denominato 'Result' più un 'plotOutput' denominato 'ResultGraph'. Sia il “tableOutput” che il “plotOutput” presenteranno i risultati del calcolo sotto forma di grafico.

ui <- fluidPage (

titoloPanel ( 'Sistema di valutazione degli esami' ) ,
sidebarLayout (
sidebarPanel (
textAreaInput ( 'punto' , 'Inserisci i punteggi per gli studenti (uno per riga):' , '' ) ,
actionButton ( 'calcolare' , 'Calcoliamo i voti' )
) ,
mainPanel (
tableOutput ( 'Risultato' ) ,
plotOutput ( 'Grafico dei risultati' )
) ) )

Il metodo server stabilisce la logica lato server dell'applicazione. I voti degli studenti vengono inizialmente memorizzati in una variabile reattiva denominata 'data'. Per questo, il pulsante 'calcola' viene monitorato dal metodo 'observeEvent' di R. Dopo l'attivazione del pulsante, il codice converte inizialmente i valori immessi nel campo di testo input in valori numerici.

Ogni punteggio è seguito da un'interruzione di riga utilizzando '\n' per inserire un nuovo punteggio nella riga successiva. Il metodo inserisce qualunque punteggio trovi nella variabile “data”. Se un utente non ha inserito alcun punteggio, il metodo mostra un messaggio con un errore.

server <- funzione ( input Output ) {

dati <- reattivoVal ( NULLO )

osservareEvento ( input$calcola, {

punto <- COME. numerico ( non elencare ( strsplit ( input$punteggio, ' \N ' ) ) )

Se ( lunghezza ( punto ) > 0 ) {

dati ( punto )

} altro {

dati ( NULLO )

showModal ( modalDialog (

titolo = 'Errore' ,

'Errore: aggiungi valore!' ,

easyClose = VERO

) )

}

} )

Vengono specificati due output, 'output$Result' più 'output$ResultGraph', per mostrare i voti degli studenti e i voti ottenuti. Il metodo dinamico renderTable() produce una tabella dati dei voti e dei voti dei test dello studente etichettata come 'output$Risultato'. Il metodo renderPlot(), anch'esso reattivo, genera un grafico a barre per i voti degli studenti e lo salva nell'output “output$ResultGraph” in modo simile.

Verranno, pertanto, rivisti ad ogni aggiornamento dei dati di input. L'espressione if (!is.null(data())) determina se i dati ricevuti sono nulli o meno. Lo script dell'istruzione 'if' viene eseguito se non è vuoto. Un vettore di punteggi per gli studenti costituisce i “dati” di input. A ogni studente viene assegnato un voto in base al punteggio ottenuto utilizzando il metodo case_when(). Un data frame contenente i voti degli studenti e i voti dei test viene creato utilizzando il metodo data.frame(). Le seguenti colonne vengono aggiunte al frame dati: 'Studente', 'Punteggio' e 'Voto'. La distribuzione dei voti viene compilata in una tabella chiamata “GradeCount” utilizzando il metodo table().

output$Risultato <- renderTable ( {

Se ( ! È. nullo ( dati ( ) ) ) {

gradi <- caso_quando (

dati ( ) > 80 ~ 'UN' ,

dati ( ) > 60 ~ 'B' ,

dati ( ) > 40 ~ 'C' ,

dati ( ) > 30 ~ 'D' ,

VERO ~ 'F'

)

dati. telaio ( Alunno = 1 : lunghezza ( dati ( ) ) , Punto = dati ( ) , Grado = gradi )

}

} )

output$Graficorisultato <- renderPlot ( {

Se ( ! È. nullo ( dati ( ) ) ) {

gradi <- caso_quando (

dati ( ) > 80 ~ 'UN' ,

dati ( ) > 60 ~ 'B' ,

dati ( ) > 40 ~ 'C' ,

dati ( ) > 30 ~ 'D' ,

VERO ~ 'F'

)

Conteggio voti <- tavolo ( gradi )

Il grafico a barre viene creato utilizzando la libreria 'ggplot2'. Count (il numero totale di studenti che hanno ottenuto ciascun voto) e la colonna Grade vengono creati in un DataFrame. Un grafico a barre con i dati 'Grade' sull''asse x' e i dati 'Conteggio' sull''asse y' viene prodotto utilizzando il metodo geom_bar(). L'opzione stat = “identity” indica a ggplot2 di utilizzare i dati effettivi senza alcun tipo di trasformazione. Un titolo, un'etichetta sull'asse x e un'etichetta sull'asse y vengono tutti aggiunti tramite il metodo 'labs'. I colori della barra vengono assegnati utilizzando il metodo scale_fill_manual(). Le linee della griglia e i componenti sovrapposti non necessari vengono rimossi utilizzando il metodo theme_minimal(). Il metodo ShinyApp(ui, server) crea un'app.

ggplot ( dati = dati. telaio ( Grado = nomi ( Conteggio voti ) , Contare = COME. numerico ( Conteggio voti ) ) ,
aes ( X = Grado e = Conta, riempi = Grado ) ) +
geom_bar ( statistica = 'identità' ) +
laboratori ( titolo = 'Distribuzione dei voti' ,
X = 'Grado' ,
E = 'Contare' ) +
scale_fill_manual ( valori = C ( 'UN' = 'verde' , 'B' = 'viola' , 'C' = 'rosa' ,
'D' = 'arancia' , 'F' = 'rosso' ) ) +
tema_minimal ( )
}
} )
}
ShinyApp ( interfaccia utente, server )

Dopo aver eseguito questo codice, abbiamo ottenuto un'interfaccia interattiva in cui abbiamo aggiunto alcuni voti e fatto clic sul pulsante 'Calcoliamo i voti'.

Viene visualizzata la tabella che contiene i punteggi e i voti degli studenti, seguita dal grafico a barre della distribuzione dei voti in diversi colori.

Conclusione

Questa guida spiega l'importanza dell'utilizzo del pacchetto Shiny nel linguaggio R tramite RStudio. Per integrare la nostra spiegazione, abbiamo creato un'applicazione web interattiva per il sistema di valutazione degli studenti nel codice R utilizzando il pacchetto 'Shiny'.