Kako izgraditi interaktivne web aplikacije uz Shiny u R

Kako Izgraditi Interaktivne Web Aplikacije Uz Shiny U R



Zahvaljujući okviru R Shiny, paketu iz RStudioa, stvaranje dinamičkih web aplikacija s R-om je relativno jednostavno. Prednost Shinyja je u tome što omogućuje postavljanje vašeg R koda na web, čineći ga dostupnijim širem krugu korisnika. Uz R Shiny možete izraditi vrlo moćna izvješća o podacima i vizualne elemente koji korisniku omogućuju analizu skupa podataka. Uz Shiny komponente, HTML elementi mogu se koristiti za dizajn sadržaja programa. Današnji članak vodi vas kroz proces konstruiranja interaktivne web aplikacije koristeći R-ov Shiny paket. Za ovo provjerite je li već instaliran 'RStudio'.

Instalirajte paket Shiny u RStudio

Prije nego krenemo prema stvaranju interaktivne web aplikacije unutar RStudia, trebali bismo imati već instaliran “Shiny” paket u njoj. Da biste to učinili, morate proširiti izbornik 'Alati' RStudio-a nakon čega slijedi opcija 'Instaliraj pakete'. Unutar otvorenog prozora morate spomenuti paket koji želite instalirati, tj. “shiny” i dodirnuti gumb “Instaliraj”. RStudio će instalirati sjajni paket u RStudio konzolu.







Započnite sa Shinyjem u R

Da biste započeli s Shinyjem u R-u, morate stvoriti novu R datoteku pomoću izbornika 'Datoteka' koji se nalazi na prvom mjestu RStudio-a. Proširite ga i upotrijebite opciju 'Nova datoteka', a zatim opciju 'R skripta'. Datoteka skripte 'bez naslova' otvorit će se u RStudiu. Preimenujte je u 'R' datoteku na željenom mjestu.



Sada učitajte potrebne pakete potrebne za izgradnju interaktivne aplikacije u R-u, tj. pomoću funkcije 'knjižnice' R-a. Naredbe 'if' koriste se za instaliranje paketa koji prethodno nisu instalirani. Paket Shiny koristi se za izgradnju interaktivnog sučelja za web aplikacije zajedno s nekim grafičkim vizualizacijama. Paket 'dplyr' uglavnom se koristi za olakšavanje manipulacije podacima u R-u korištenjem nekih korisnih funkcija.



Na kraju, paket 'ggplot2' učitava se kao izvrstan izvor vizualizacije podataka stvaranjem prilagođenih i snažnih grafikona.





ako ( ! zahtijeva prostor imena ( 'sjajan' , tiho = PRAVI ) ) {

instalirati. paketi ( 'sjajan' )

}

ako ( ! zahtijeva prostor imena ( 'dplyr' , tiho = PRAVI ) ) {

instalirati. paketi ( 'dplyr' )

}

ako ( ! zahtijeva prostor imena ( 'ggplot2' , tiho = PRAVI ) ) {

instalirati. paketi ( 'ggplot2' )

}

knjižnica ( sjajan )

knjižnica ( dplyr )

knjižnica ( ggplot2 )

Izgradite interaktivni sustav ocjenjivanja ispita

Unutar ovog vodiča izradit ćemo 'Sustav ocjenjivanja ispita' za studente kako bi dobili svoje postignute ocjene putem ocjena koje su dobivene od 100. Priložena skripta je 'ui' komponenta aplikacije Shiny koja određuje dizajn i izgled Program. Program generira fluidPage, prilagodljivi dizajn koji se može prilagoditi prozoru preglednika.

“TitlePanel” i “sidebarLayout” potomci su “fluidPage”. Naslov programa 'Sustav ocjenjivanja ispita' je sve što je prikazano u 'titlePanelu'. 'sidebarPanel' i 'mainPanel' su dva odjeljka koja 'sidebarLayout' koristi za dijeljenje aplikacije. Par ulaza uključen je u 'sidebarPanel': 'textAreaInput' pod nazivom 'score' plus 'actionButton' pod nazivom 'calculate'.



Za svakog studenta može se unijeti jedan rezultat po retku koristeći 'textAreaInput'. Ocjenjivanje se može pokrenuti korištenjem “actionButton”. Par izlaza prisutan je u “mainPanelu”: “tableOutput” pod nazivom “Result” plus “plotOutput” pod nazivom “ResultGraph”. I 'tableOutput' i 'plotOutput' prikazat će nalaze izračuna u obliku grafikona.

ui <- fluidPage (

titlePanel ( 'Sustav ocjenjivanja ispita' ) ,
sidebarLayout (
bočna trakaPanel (
textAreaInput ( 'postići' , 'Unesite rezultate za studente (jedan po retku):' , '' ) ,
actionButton ( 'izračunati' , 'Izračunajmo ocjene' )
) ,
glavna ploča (
tableOutput ( 'Proizlaziti' ) ,
plotOutput ( 'Grafikon rezultata' )
) ) )

Poslužiteljska metoda uspostavlja logiku aplikacije na strani poslužitelja. Ocjene za učenike početno se pohranjuju u reaktivnu varijablu pod nazivom 'podaci'. Za to se gumb 'izračunaj' nadzire metodom 'observeEvent' R-a. Nakon što se gumb pokrene, kod početno pretvara vrijednosti koje su unesene u tekstualno polje za unos u numeričke vrijednosti.

Nakon svakog rezultata slijedi prijelom retka pomoću “\n” za unos novog rezultata u sljedećem retku. Metoda stavlja bilo koji rezultat koji pronađe u varijablu 'podaci'. Ako korisnik nije unio rezultat, metoda prikazuje poruku s pogreškom.

poslužitelj <- funkcija ( ulaz izlaz ) {

podaci <- reactiveVal ( NULL )

promatratiDogađaj ( unos$izračunaj, {

postići <- kao. numerički ( poništi popis ( strsplit ( input$score, ' \n ' ) ) )

ako ( duljina ( postići ) > 0 ) {

podaci ( postići )

} drugo {

podaci ( NULL )

showModal ( modalniDijalog (

titula = 'pogreška' ,

'Pogreška: dodajte vrijednost!' ,

easyClose = PRAVI

) )

}

} )

Dva izlaza, 'output$Result' plus 'output$ResultGraph', navedena su za prikaz studentskih ocjena i postignutih ocjena. Dinamička metoda renderTable() proizvodi podatkovnu tablicu studentovih ispitnih ocjena i ocjena koja je označena kao 'output$Result'. Metoda renderPlot(), koja je također reaktivna, generira stupčasti grafikon za ocjene učenika i na sličan način ga sprema u izlaz 'output$ResultGraph'.

Oni će stoga biti pregledani svaki put kada se ulazni podaci ažuriraju. Izraz if (!is.null(data()))) određuje jesu li podaci koji se primaju null ili ne. Skripta naredbe 'if' izvodi se ako nije prazna. Vektor rezultata za studente čini ulazne “podatke”. Svaki učenik dobiva ocjenu na temelju svog rezultata pomoću metode case_when(). Podatkovni okvir koji sadrži ocjene učenika i ispitne ocjene kreira se pomoću metode data.frame(). U okvir podataka dodaju se sljedeći stupci: “Student”, “Score” i “Grade”. Distribucija ocjena sastavlja se u tablici pod nazivom 'GradeCount' pomoću metode table().

izlaz$Rezultat <- renderTable ( {

ako ( ! je. ništavan ( podaci ( ) ) ) {

ocjene <- slučaj_kada (

podaci ( ) > 80 ~ 'A' ,

podaci ( ) > 60 ~ 'B' ,

podaci ( ) > 40 ~ 'C' ,

podaci ( ) > 30 ~ 'D' ,

PRAVI ~ 'F'

)

podaci. okvir ( Student = 1 : duljina ( podaci ( ) ) , rezultat = podaci ( ) , Ocjena = ocjene )

}

} )

output$ResultGraph <- renderPlot ( {

ako ( ! je. ništavan ( podaci ( ) ) ) {

ocjene <- slučaj_kada (

podaci ( ) > 80 ~ 'A' ,

podaci ( ) > 60 ~ 'B' ,

podaci ( ) > 40 ~ 'C' ,

podaci ( ) > 30 ~ 'D' ,

PRAVI ~ 'F'

)

GradeCount <- stol ( ocjene )

Trakasti grafikon kreira se pomoću biblioteke 'ggplot2'. Count (ukupan broj učenika koji su dobili svaku ocjenu) i stupac Ocjena kreiraju se u DataFrameu. Stupčasti grafikon s podacima o ocjeni na osi x i podacima o prebrojavanju na osi y izrađuje se metodom geom_bar(). Opcija stat = “identity” upućuje ggplot2 da koristi stvarne podatke bez ikakve transformacije. Naslov, oznaka x-osi i oznaka y-osi dodaju se metodom 'laboratorija'. Boje trake se dodjeljuju pomoću metode scale_fill_manual(). Nepotrebne linije rešetke i preklapajuće komponente uklanjaju se metodom theme_minimal(). Metoda shinyApp(ui, server) gradi aplikaciju.

ggplot ( podaci = podaci. okvir ( Razred = imena ( GradeCount ) , grof = kao. numerički ( GradeCount ) ) ,
aes ( x = Ocjena, i = Broji, puni = Razred ) ) +
        geom_bar ( stat = 'identitet' ) +
laboratoriji ( titula = 'Raspodjela ocjena' ,
x = 'Razred' ,
i = 'Računati' ) +
scale_fill_manual ( vrijednosti = c ( 'A' = 'zeleno' , 'B' = 'ljubičasta' , 'C' = 'ružičasta' ,
'D' = 'naranča' , 'F' = 'Crvena' ) ) +
tema_minimalna ( )
}
} )
}
shinyApp ( ui, poslužitelj )

Nakon pokretanja ovog koda, dobili smo interaktivno sučelje u koje smo dodali neke oznake i kliknuli na gumb 'Izračunajmo ocjene'.

Prikazana je tablica koja sadrži bodove i ocjene učenika, a zatim stupčasti grafikon distribucije ocjena u različitim bojama.

Zaključak

Ovaj vodič objašnjava važnost korištenja paketa Shiny u jeziku R putem RStudia. Kako bismo dopunili naše objašnjenje, konstruirali smo interaktivnu web aplikaciju za sustav ocjenjivanja učenika u R kodu koristeći paket 'Shiny'.