Interaktiivisten verkkosovellusten rakentaminen Shinyn avulla R

Interaktiivisten Verkkosovellusten Rakentaminen Shinyn Avulla R



R Shiny -kehyksen, RStudion paketin, ansiosta dynaamisten verkkosovellusten luominen R:llä on suhteellisen helppoa. Shinyn etuna on, että sen avulla on mahdollista laittaa R-koodisi verkkoon, jolloin se on entistä laajemman käyttäjien ulottuvilla. R Shinyn avulla voit luoda erittäin tehokkaita dataraportteja ja visualisointeja, joiden avulla käyttäjä voi analysoida tietojoukkoa. Shiny-komponenttien ohella HTML-elementtejä voidaan käyttää ohjelman sisällön suunnitteluun. Tämän päivän artikkeli opastaa sinua luomaan vuorovaikutteisen verkkosovelluksen, jossa käytetään R's Shiny -pakettia. Varmista tätä varten, että 'RStudio' on jo asennettu.

Asenna Shiny Package RStudioon

Ennen kuin siirrymme kohti interaktiivisen verkkosovelluksen luomista RStudiossa, meillä pitäisi olla 'Shiny'-paketti jo asennettuna siihen. Tätä varten sinun on laajennettava RStudion 'Työkalut'-valikkoa ja sen jälkeen 'Asenna paketit' -vaihtoehto. Avautuvassa ikkunassa sinun on mainittava paketti, jonka haluat asentaa, eli 'kiiltävä', ja napauta 'Asenna' -painiketta. RStudio asentaa kiiltävän paketin RStudio-konsoliin.







Aloita Shinyn kanssa R:ssä

Aloita Shiny in R:n käyttö luomalla uusi R-tiedosto käyttämällä 'File'-valikkoa, joka sijaitsee RStudion alussa. Laajenna se ja käytä 'Uusi tiedosto' -vaihtoehtoa ja sen jälkeen 'R Script' -vaihtoehtoa. 'Nimetön' skriptitiedosto avataan RStudiossa. Nimeä se uudelleen 'R'-tiedostoksi haluamassasi paikassa.



Lataa nyt tarvittavat paketit, joita tarvitaan interaktiivisen sovelluksen rakentamiseen R:ssä, eli käyttämällä R:n 'kirjasto'-toimintoa. 'if'-käskyjä käytetään asentamaan paketit, joita ei ole aiemmin asennettu. Shiny-pakettia käytetään vuorovaikutteisen käyttöliittymän rakentamiseen web-sovelluksille yhdessä joidenkin graafisten visualisointien kanssa. 'dplyr'-pakettia käytetään pääasiassa helpottamaan tietojen käsittelyä R:ssä käyttämällä hyödyllisiä toimintoja.



Lopuksi 'ggplot2'-paketti ladataan erinomaiseksi datan visualisoinnin lähteeksi luomalla mukautettuja ja tehokkaita kaavioita.





jos ( ! vaatiaNamespace ( 'kiiltävä' , hiljaa = TOTTA ) ) {

Asentaa. paketteja ( 'kiiltävä' )

}

jos ( ! vaatiaNamespace ( 'dplyr' , hiljaa = TOTTA ) ) {

Asentaa. paketteja ( 'dplyr' )

}

jos ( ! vaatiaNamespace ( 'ggplot2' , hiljaa = TOTTA ) ) {

Asentaa. paketteja ( 'ggplot2' )

}

kirjasto ( kiiltävä )

kirjasto ( dplyr )

kirjasto ( ggplot2 )

Rakenna interaktiivinen kokeen arviointijärjestelmä

Tässä opetusohjelmassa luomme kokeen arviointijärjestelmän, jonka avulla opiskelijat saavat saavuttamansa arvosanat sadasta pisteestä saatujen arvosanojen kautta. Toimitettu skripti on Shiny-sovelluksen 'ui'-komponentti, joka määrittää kokeen suunnittelun ja ulkoasun. ohjelma. Ohjelma luo fluidPagen, mukautuvan suunnittelun, joka voidaan skaalata mukautumaan selainikkunaan.

'TitlePanel' ja 'sidebarLayout' ovat 'fluidPagen' jälkeläisiä. Ohjelman 'Exam Grading System' otsikko on kaikki, mikä näkyy 'titlePanelissa'. 'SidebarPanel' ja 'mainPanel' ovat kaksi osaa, joita 'sidebarLayout' käyttää sovelluksen jakamiseen. 'SidebarPanel' sisältää pari syötettä: 'textAreaInput' nimeltä 'score' ja 'actionButton' nimeltä 'calculate'.



Jokaiselle opiskelijalle voidaan syöttää yksi pistemäärä riviä kohden käyttämällä 'textAreaInput'. Arvosanan arvioinnin voi aloittaa 'actionButton'-painikkeella. 'MainPanel' -paneelissa on pari ulostuloa: 'tableOutput' nimeltä 'Result' ja 'plotOutput' nimeltä 'ResultGraph'. Sekä 'tableOutput' että 'plotOutput' esittävät laskennan tulokset kaavion muodossa.

ui <- fluidPage (

otsikkopaneeli ( 'Kokeiden arviointijärjestelmä' ) ,
sivupalkin ulkoasu (
sivupalkkiPaneeli (
textAreaInput ( 'pisteet' , 'Anna pisteet opiskelijoille (yksi per rivi):' , '' ) ,
toimintapainike ( 'laskea' , 'Lasketaan arvosanat' )
) ,
pääpaneeli (
taulukon ulostulo ( 'Tulos' ) ,
plotOutput ( 'ResultGraph' )
) ) )

Palvelinmenetelmä määrittää sovelluksen palvelinpuolen logiikan. Opiskelijoiden arvosanat tallennetaan aluksi reaktiiviseen muuttujaan nimeltä 'data'. Tätä varten 'laske'-painiketta valvotaan R:n 'observeEvent'-menetelmällä. Painikkeen laukaisun jälkeen koodi muuntaa ensin tekstikenttään syötetyt arvot numeerisiksi arvoiksi.

Jokaista pistemäärää seuraa rivinvaihto käyttämällä '\n' syöttääksesi uuden tuloksen aivan seuraavalle riville. Menetelmä sijoittaa löytämänsä pisteet 'data'-muuttujaan. Jos käyttäjä ei ole syöttänyt pisteitä, menetelmä näyttää virheilmoituksen.

palvelin <- toiminto ( tulo, lähtö ) {

tiedot <- reaktiivinenVal ( TYHJÄ )

tarkkailla Tapahtumaa ( input$calculate, {

pisteet <- kuten. numeerinen ( poista luettelosta ( strsplit ( input$score, ' \n ' ) ) )

jos ( pituus ( pisteet ) > 0 ) {

tiedot ( pisteet )

} muu {

tiedot ( TYHJÄ )

showModal ( modaalidialogi (

otsikko = 'Virhe' ,

'Virhe: Ole hyvä ja lisää arvoa!' ,

easyClose = TOTTA

) )

}

} )

Kaksi tulostetta, 'output$Result' plus 'output$ResultGraph', on määritetty näyttämään oppilaiden arvosanat ja saavutetut arvosanat. Dynaaminen renderTable()-menetelmä tuottaa tietotaulukon opiskelijan koepisteistä ja arvosanoista, joka on merkitty 'output$Result'. RenderPlot()-metodi, joka on myös reaktiivinen, luo pylväskaavion oppilaiden arvosanoille ja tallentaa sen 'output$ResultGraph' -tulostukseen samalla tavalla.

Siksi ne tarkistetaan aina, kun syöttötiedot päivittyvät. If (!is.null(data()))-lauseke määrittää, onko vastaanotettava data tyhjä. 'if'-lauseen komentosarja suoritetaan, jos se ei ole tyhjä. Opiskelijoiden pisteiden vektori muodostaa syötetyn 'datan'. Jokaiselle opiskelijalle annetaan arvosana hänen pistemääränsä perusteella case_when() -menetelmällä. Data.frame() -menetelmällä luodaan tietokehys, joka sisältää oppilaiden arvosanat ja koearvosanat. Tietokehykseen lisätään seuraavat sarakkeet: 'Opiskelija', 'Pistemäärä' ja 'Arvosana'. Arvosanajakauma kootaan taulukkoon nimeltä “GradeCount” table()-menetelmällä.

output$Result <- renderöintitaulukko ( {

jos ( ! On. tyhjä ( tiedot ( ) ) ) {

arvosanat <- case_when (

tiedot ( ) > 80 ~ 'A' ,

tiedot ( ) > 60 ~ 'B' ,

tiedot ( ) > 40 ~ 'C' ,

tiedot ( ) > 30 ~ 'D' ,

TOTTA ~ 'F'

)

tiedot. kehys ( Opiskelija = 1 : pituus ( tiedot ( ) ) , Pisteet = tiedot ( ) , Arvosana = arvosanat )

}

} )

output$ResultGraph <- renderPlot ( {

jos ( ! On. tyhjä ( tiedot ( ) ) ) {

arvosanat <- case_when (

tiedot ( ) > 80 ~ 'A' ,

tiedot ( ) > 60 ~ 'B' ,

tiedot ( ) > 40 ~ 'C' ,

tiedot ( ) > 30 ~ 'D' ,

TOTTA ~ 'F'

)

GradeCount <- pöytä ( arvosanat )

Pylväskaavio luodaan käyttämällä 'ggplot2'-kirjastoa. Count (kunkin arvosanan saaneiden oppilaiden kokonaismäärä) ja sarake Arvosana luodaan DataFrame-kehykseen. Pylväsdiagrammi, jossa on 'Grade'-tiedot 'x-akselilla' ja 'Count'-tiedot 'y-akselilla', tuotetaan käyttämällä geom_bar()-menetelmää. Vaihtoehto stat = “identity” käskee ggplot2:ta käyttämään todellista dataa ilman minkäänlaista muunnosa. Otsikko, x-akselin otsikko ja y-akselin otsikko lisätään kaikki 'labs'-menetelmällä. Palkin värit määritetään käyttämällä scale_fill_manual() -menetelmää. Tarpeettomat ruudukkoviivat ja peittokomponentit poistetaan käyttämällä theme_minimal()-metodia. ShinyApp(ui, server) -menetelmä rakentaa sovelluksen.

ggplot ( tiedot = tiedot. kehys ( Arvosana = nimet ( GradeCount ) , Kreivi = kuten. numeerinen ( GradeCount ) ) ,
aes ( x = Arvosana ja = Laske, täytä = Arvosana ) ) +
geom_bar ( stat = 'identiteetti' ) +
Labs ( otsikko = 'Arkistojakauma' ,
x = 'Arvosana' ,
ja = 'Kreivi' ) +
scale_fill_manual ( arvot = c ( 'A' = 'vihreä' , 'B' = 'violetti' , 'C' = 'vaaleanpunainen' ,
'D' = 'oranssi' , 'F' = 'punainen' ) ) +
theme_minimal ( )
}
} )
}
shinyApp ( ui, palvelin )

Kun suoritimme tämän koodin, saimme interaktiivisen käyttöliittymän, johon lisäsimme joitakin pisteitä ja napsautettiin 'Lasketaan arvosanat' -painiketta.

Näyttöön tulee taulukko, joka sisältää oppilaiden pisteet ja arvosanat, ja sen jälkeen pylväsdiagrammi arvosanajakaumasta eri väreissä.

Johtopäätös

Tämä opas selittää Shiny-paketin käytön tärkeyden R-kielellä RStudion kautta. Selostuksen täydennykseksi rakensimme interaktiivisen verkkosovelluksen opiskelijoiden R-koodin arviointijärjestelmään hyödyntäen 'Shiny'-pakettia.