Kuidas luua interaktiivseid veebirakendusi rakendusega Shiny in R

Kuidas Luua Interaktiivseid Veebirakendusi Rakendusega Shiny In R



Tänu RStudio paketile R Shiny on dünaamiliste veebirakenduste loomine R-ga suhteliselt lihtne. Shiny eeliseks on see, et see võimaldab panna oma R-koodi veebi, muutes selle kättesaadavamaks laiemale kasutajaskonnale. R Shiny abil saate luua väga võimsaid andmearuandeid ja visuaale, mis võimaldavad kasutajal andmekogumit analüüsida. Koos Shiny komponentidega saab programmi sisu kujundamiseks kasutada HTML-i elemente. Tänane artikkel juhendab teid R's Shiny paketti kasutava interaktiivse veebirakenduse loomise protsessis. Selleks veenduge, et RStudio oleks juba installitud.

Installige RStudiosse läikiv pakett

Enne RStudio sees interaktiivse veebirakenduse loomise poole liikumist peaks meil olema pakett 'Shiny' juba sinna installitud. Selleks peate laiendama RStudio menüüd 'Tööriistad', millele järgneb valik 'Install paketid'. Avanenud aknas tuleb mainida pakett, mida soovid installida, st “läikiv” ja puudutada nuppu “Install”. RStudio paigaldab läikiva paketi RStudio konsooli.







Alustage Shinyga R-is

Shiny in R-i alustamiseks peate looma uue R-faili, kasutades RStudio esimesel kohal asuvat menüüd Fail. Laiendage seda ja kasutage valikut 'Uus fail', millele järgneb suvand 'R Script'. Pealkirjata skriptifail avatakse RStudios. Nimetage see soovitud asukohas ümber R-failiks.



Nüüd laadige R-is interaktiivse rakenduse loomiseks vajalikud paketid, st kasutades R-i 'teegi' funktsiooni. Kui-lauseid kasutatakse nende pakettide installimiseks, mida varem ei installitud. Shiny paketti kasutatakse veebirakenduste interaktiivse liidese koos mõne graafilise visualiseerimisega. Paketti 'dplyr' kasutatakse peamiselt R-is andmetega manipuleerimise hõlbustamiseks, kasutades mõningaid kasulikke funktsioone.



Lõpuks laaditakse pakett 'ggplot2' suurepärase andmete visualiseerimise allikana, luues kohandatud ja võimsaid graafikuid.





kui ( ! nõudaNimeruumi ( 'läikiv' , vaikselt = TÕSI ) ) {

installida. paketid ( 'läikiv' )

}

kui ( ! nõudaNimeruumi ( 'dplyr' , vaikselt = TÕSI ) ) {

installida. paketid ( 'dplyr' )

}

kui ( ! nõudaNimeruumi ( 'ggplot2' , vaikselt = TÕSI ) ) {

installida. paketid ( 'ggplot2' )

}

raamatukogu ( läikiv )

raamatukogu ( dplyr )

raamatukogu ( ggplot2 )

Looge interaktiivne eksamite hindamissüsteem

Selle õpetuse raames loome õpilastele 'eksamite hindamissüsteemi', et saada oma saavutatud hindeid 100-st saadud hinnete kaudu. Kaasasolev skript on särava rakenduse 'ui' komponent, mis määrab kindlaks rakenduse kujunduse ja välimuse. programm. Programm loob fluidPage'i, kohandatava kujunduse, mida saab brauseriakna jaoks kohandada.

'TitlePanel' ja 'sidebarLayout' on 'fluidPage' järglased. Programmi pealkiri 'Exam Grading System' on kõik, mis kuvatakse 'titlePanel'-il. Külgribapaneel ja peapaneel on kaks jaotist, mida külgriba paigutus rakenduse jagamiseks kasutab. 'SidebarPanel' sisaldab paar sisendit: 'textAreaInput' nimega 'skoor' ja 'actionButton' nimega 'arvuta'.



Iga õpilase kohta saab sisestada ühe hinde rea kohta kasutades “textAreaInput”. Hinde hindamist saab alustada “actionButtoni” abil. Peapaneelil on paar väljundit: 'tableOutput' nimega 'Result' ja 'plotOutput' nimega 'ResultGraph'. Nii 'tableOutput' kui ka 'plotOutput' esitavad arvutuse tulemused graafiku kujul.

ui <- fluidPage (

pealkiriPaneel ( 'Eksamite hindamissüsteem' ) ,
külgribaPaigutus (
külgribaPaneel (
textAreaInput ( 'skoor' , 'Sisestage õpilaste hinded (üks rea kohta):' , '' ) ,
toimingunupp ( 'arvutama' , 'Arvutame hindeid' )
) ,
peapaneel (
tabel Väljund ( 'Tulemus' ) ,
plotOutput ( 'ResultGraph' )
) ) )

Serverimeetod loob rakenduse serveripoolse loogika. Õpilaste hinded salvestatakse algselt reaktiivsesse muutujasse nimega “data”. Selleks jälgitakse nuppu “Arvuta” R-meetodil “observeEvent”. Pärast nupu käivitamist teisendab kood tekstiväljale sisestatud väärtused algselt arvväärtusteks.

Igale skoorile järgneb reavahetus, kasutades '\n', et sisestada uus hind järgmisele reale. Meetod asetab leitud skoori muutujasse 'andmed'. Kui kasutajal pole skoori sisestatud, kuvab meetod veateate.

server <- funktsiooni ( sisend väljund ) {

andmeid <- reactiveVal ( NULL )

jälgi sündmust ( input$calculate, {

skoor <- nagu. numbriline ( nimekirjast väljas ( strsplit ( input$score, ' \n ' ) ) )

kui ( pikkus ( skoor ) > 0 ) {

andmeid ( skoor )

} muidu {

andmeid ( NULL )

showModal ( modaalne dialoog (

pealkiri = 'Viga' ,

'Viga: palun lisage väärtust!' ,

lihtneClose = TÕSI

) )

}

} )

Õpilaste hinnete ja saavutatud hinnete kuvamiseks on määratud kaks väljundit, “output$Result” plus “output$ResultGraph”. Dünaamiline meetod renderTable() loob andmetabeli õpilase testi tulemustest ja hinnetest, mis on märgistatud kui 'output$ Result'. RenderPlot() meetod, mis on samuti reaktiivne, genereerib õpilaste hinnete jaoks tulpdiagrammi ja salvestab selle sarnaselt väljundisse 'output$ResultGraph'.

Seetõttu vaadatakse need üle iga kord, kui sisendandmeid värskendatakse. Avaldis if (!is.null(data())) määrab, kas vastuvõetavad andmed on nullid või mitte. „If”-lause skript täidetakse, kui see pole tühi. Õpilaste punktisummade vektor moodustab sisendandmete. Igale õpilasele antakse hinne tema punktisumma alusel, kasutades meetodit case_when(). Andmeraam, mis sisaldab õpilaste hindeid ja testimärke, luuakse meetodil data.frame(). Andmeraamile lisatakse järgmised veerud: 'Õpilane', 'Skoor' ja 'Hinne'. Hinnete jaotus koostatakse tabelis nimega “GradeCount”, kasutades table() meetodit.

väljund$Tulemus <- renderdabel ( {

kui ( ! on. null ( andmeid ( ) ) ) {

hinded <- case_when (

andmeid ( ) > 80 ~ 'A' ,

andmeid ( ) > 60 ~ 'B' ,

andmeid ( ) > 40 ~ 'C' ,

andmeid ( ) > 30 ~ 'D' ,

TÕSI ~ 'F'

)

andmeid. raami ( Üliõpilane = 1 : pikkus ( andmeid ( ) ) , Skoor = andmeid ( ) , Hinne = hinded )

}

} )

output$ResultGraph <- renderPlot ( {

kui ( ! on. null ( andmeid ( ) ) ) {

hinded <- case_when (

andmeid ( ) > 80 ~ 'A' ,

andmeid ( ) > 60 ~ 'B' ,

andmeid ( ) > 40 ~ 'C' ,

andmeid ( ) > 30 ~ 'D' ,

TÕSI ~ 'F'

)

Hinnete arv <- laud ( hinded )

Lintdiagramm luuakse teegi “ggplot2” abil. Andmeraamis luuakse loendus (iga hinde saanud õpilaste koguarv) ja veerg Hinne. Geom_bar() meetodil koostatakse tulpdiagramm, mille andmed on 'x-teljel' ja 'loenduse' andmed 'y-teljel'. Valik stat = 'identiteet' juhendab ggplot2 kasutama tegelikke andmeid ilma igasuguse teisenduseta. Pealkiri, x-telje silt ja y-telje silt lisatakse kõik laborimeetodi abil. Riba värvid määratakse meetodi scale_fill_manual() abil. Mittevajalikud ruudustikujooned ja ülekattekomponendid eemaldatakse meetodi theme_minimal() abil. ShinyApp (ui, server) meetod loob rakenduse.

ggplot ( andmeid = andmeid. raami ( Hinne = nimed ( Hinnete arv ) , Count = nagu. numbriline ( Hinnete arv ) ) ,
aes ( x = Hinne ja = Loendage, täitke = Hinne ) ) +
geom_bar ( stat = 'identiteet' ) +
laborid ( pealkiri = 'Hinnete jaotus' ,
x = 'Hinne' ,
ja = 'count' ) +
scale_fill_manual ( väärtused = c ( 'A' = 'roheline' , 'B' = 'lilla' , 'C' = 'roosa' ,
'D' = 'oranž' , 'F' = 'punane' ) ) +
theme_minimal ( )
}
} )
}
shinyApp ( ui, server )

Selle koodi käivitamisel saime interaktiivse liidese, kuhu lisasime mõned hinded ja klõpsasime nupul 'Arvutame hindeid'.

Kuvatakse õpilaste hindeid ja hindeid sisaldav tabel, millele järgneb erinevates värvides hinnete jaotuse tulpdiagramm.

Järeldus

See juhend selgitab Shiny paketi kasutamise tähtsust R-keeles RStudio kaudu. Täiendamaks oma selgitust, koostasime interaktiivse veebirakenduse õpilaste R-koodi hindamissüsteemi jaoks, kasutades paketti 'Shiny'.