Ako vytvoriť interaktívne webové aplikácie s Shiny v R

Ako Vytvorit Interaktivne Webove Aplikacie S Shiny V R



Vďaka rámcu R Shiny, balíku od RStudio, je vytváranie dynamických webových aplikácií s R relatívne jednoduché. Výhodou Shiny je, že umožňuje umiestniť váš R kód na web, čím sa stáva dostupnejším pre širší okruh používateľov. S R Shiny môžete vytvárať veľmi výkonné dátové zostavy a vizuály, ktoré umožňujú užívateľovi analyzovať dátový súbor. Spolu s komponentmi Shiny môžu byť prvky HTML použité na návrh obsahu programu. Dnešný článok vás prevedie procesom vytvárania interaktívnej webovej aplikácie využívajúcej balík R's Shiny. Za týmto účelom sa uistite, že už máte nainštalované „RStudio“.

Nainštalujte balík Shiny v RStudio

Pred vytvorením interaktívnej webovej aplikácie v RStudio by sme mali mať už nainštalovaný balík „Shiny“. Na tento účel musíte rozbaliť ponuku „Nástroje“ v RStudio, po ktorej nasleduje možnosť „Inštalovať balíčky“. V otvorenom okne musíte spomenúť balík, ktorý chcete nainštalovať, t. j. „shiny“ a klepnúť na tlačidlo „Inštalovať“. RStudio nainštaluje lesklý balík do konzoly RStudio.







Začnite s Shiny v R

Ak chcete začať s Shiny v R, musíte vytvoriť nový súbor R pomocou ponuky „Súbor“, ktorá sa nachádza na prvom mieste v RStudio. Rozbaľte ho a použite možnosť „Nový súbor“ a potom možnosť „Skript R“. Súbor skriptu „bez názvu“ sa otvorí v RStudio. Premenujte ho na súbor „R“ v požadovanom umiestnení.



Teraz načítajte potrebné balíky potrebné na vytvorenie interaktívnej aplikácie v jazyku R, t. j. pomocou funkcie „knižnica“ jazyka R. Príkazy „if“ sa používajú na inštaláciu balíkov, ktoré predtým neboli nainštalované. Balík Shiny sa používa na vytvorenie interaktívneho rozhrania pre webové aplikácie spolu s niektorými grafickými vizualizáciami. Balík „dplyr“ sa používa hlavne na uľahčenie manipulácie s údajmi v R pomocou niektorých užitočných funkcií.



Nakoniec sa balík „ggplot2“ načíta ako skvelý zdroj vizualizácie údajov vytváraním prispôsobených a výkonných grafov.





ak ( ! vyžadovaťMenný priestor ( 'lesklý' , ticho = PRAVDA ) ) {

Inštalácia. balíkov ( 'lesklý' )

}

ak ( ! vyžadovaťMenný priestor ( 'dplyr' , ticho = PRAVDA ) ) {

Inštalácia. balíkov ( 'dplyr' )

}

ak ( ! vyžadovaťMenný priestor ( 'ggplot2' , ticho = PRAVDA ) ) {

Inštalácia. balíkov ( 'ggplot2' )

}

knižnica ( lesklý )

knižnica ( dplyr )

knižnica ( ggplot2 )

Vytvorte si interaktívny systém hodnotenia skúšok

V rámci tohto tutoriálu vytvoríme „Systém hodnotenia skúšok“, aby študenti získali svoje dosiahnuté známky prostredníctvom známok získaných zo 100. Poskytnutý skript je súčasťou „ui“ aplikácie Shiny, ktorá špecifikuje dizajn a vzhľad Program. Program vygeneruje fluidPage, adaptabilný dizajn, ktorý je možné upraviť tak, aby sa prispôsobil oknu prehliadača.

„titlePanel“ a „sidebarLayout“ sú potomkami „fluidPage“. Názov programu „Systém klasifikácie skúšok“ je všetko, čo sa zobrazuje v „Paneli nadpisov“. „sidebarPanel“ a „mainPanel“ sú dve sekcie, ktoré „sidebarLayout“ používa na rozdelenie aplikácie. V „sidebarPanel“ je zahrnutý pár vstupov: „textAreaInput“ s názvom „score“ plus „actionButton“ s názvom „kalkulovať“.



Pre každého študenta je možné zadať jedno skóre na riadok pomocou „textAreaInput“. Hodnotenie známkou možno spustiť pomocou „actionButton“. V „hlavnom paneli“ je prítomný pár výstupov: „tableOutput“ s názvom „Result“ plus „plotOutput“ s názvom „ResultGraph“. „tableOutput“ aj „plotOutput“ budú prezentovať výsledky výpočtu vo forme grafu.

ui <- fluidPage (

titlePanel ( 'Systém hodnotenia skúšok' ) ,
rozloženie bočného panela (
bočný panelPanel (
textAreaInput ( 'skóre' , 'Zadajte skóre pre študentov (jedno na riadok):' , '' ) ,
actionButton ( 'vypočítať' , 'Poďme vypočítať známky' )
) ,
hlavný panel (
tableOutput ( 'výsledok' ) ,
plotOutput ( 'Graf výsledkov' )
) ) )

Serverová metóda vytvára logiku aplikácie na strane servera. Známky pre študentov sú spočiatku uložené v reaktívnej premennej s názvom „údaje“. Na tento účel je tlačidlo „vypočítať“ monitorované metódou „observeEvent“ R. Po spustení tlačidla kód najprv prevedie hodnoty zadané do textového poľa na číselné hodnoty.

Po každom skóre nasleduje zalomenie riadku pomocou „\n“ na vloženie nového skóre na ďalší riadok. Metóda umiestni akékoľvek skóre, ktoré nájde, do premennej „data“. Ak používateľ nezadal žiadne skóre, metóda zobrazí správu s chybou.

server <- funkciu ( vstup výstup ) {

údajov <- reactiveVal ( NULOVÝ )

pozorovaťUdalosť ( vstup $ vypočítať, {

skóre <- ako. číselné ( vyradiť zo zoznamu ( strsplit ( vstup $ skóre, ' \n ' ) ) )

ak ( dĺžka ( skóre ) > 0 ) {

údajov ( skóre )

} inak {

údajov ( NULOVÝ )

showModal ( modálny dialóg (

titul = 'Chyba' ,

'Chyba: Pridajte hodnotu!' ,

easyClose = PRAVDA

) )

}

} )

Dva výstupy, „výstup$Výsledok“ plus „Výstup$VýsledokGraph“, sú určené na zobrazenie známok a dosiahnutých známok študentov. Dynamická metóda renderTable() vytvára tabuľku s údajmi o študentových známkach a známkach, ktorá je označená ako „výstup $Výsledok“. Metóda renderPlot(), ktorá je tiež reaktívna, vygeneruje stĺpcový graf pre známky študentov a podobne ho uloží do výstupu „output$ResultGraph“.

Budú sa preto kontrolovať vždy, keď sa aktualizujú vstupné údaje. Výraz if (!is.null(data())) určuje, či sú prijímané údaje nulové. Skript príkazu „if“ sa vykoná, ak nie je prázdny. Vektor skóre pre študentov tvorí vstupné „údaje“. Každý študent dostane známku na základe skóre pomocou metódy case_when(). Pomocou metódy data.frame() sa vytvorí dátový rámec obsahujúci známky študentov a známky testu. Do dátového rámca sa pridajú nasledujúce stĺpce: „Študent“, „Skóre“ a „Značka“. Distribúcia známok je zostavená v tabuľke s názvom „GradeCount“ pomocou metódy table().

výstup $Výsledok <- renderTable ( {

ak ( ! je. nulový ( údajov ( ) ) ) {

ročníkov <- case_when (

údajov ( ) > 80 ~ 'A' ,

údajov ( ) > 60 ~ 'B' ,

údajov ( ) > 40 ~ 'C' ,

údajov ( ) > 30 ~ 'D' ,

PRAVDA ~ 'F'

)

údajov. rám ( Študent = 1 : dĺžka ( údajov ( ) ) , skóre = údajov ( ) , Stupeň = ročníkov )

}

} )

output$ResultGraph <- renderPlot ( {

ak ( ! je. nulový ( údajov ( ) ) ) {

ročníkov <- case_when (

údajov ( ) > 80 ~ 'A' ,

údajov ( ) > 60 ~ 'B' ,

údajov ( ) > 40 ~ 'C' ,

údajov ( ) > 30 ~ 'D' ,

PRAVDA ~ 'F'

)

GradeCount <- tabuľky ( ročníkov )

Stĺpcový graf je vytvorený pomocou knižnice „ggplot2“. Počet (celkový počet študentov, ktorí získali každú známku) a stĺpec Známka sú vytvorené v DataFrame. Pomocou metódy geom_bar() sa vytvorí stĺpcový graf s údajmi „Stupeň“ na „osi x“ a údajmi „Počet“ na „osi y“. Voľba stat = “identity” dáva pokyn ggplot2, aby využíval aktuálne dáta bez akejkoľvek transformácie. Názov, označenie osi x a označenie osi y sa pridávajú pomocou metódy „labs“. Farby pruhu sa priraďujú pomocou metódy scale_fill_manual(). Nepotrebné čiary mriežky a prekryvné komponenty sa odstránia pomocou metódy theme_minimal(). Metóda shinyApp (ui, server) vytvára aplikáciu.

ggplot ( údajov = údajov. rám ( stupňa = mená ( GradeCount ) , gróf = ako. číselné ( GradeCount ) ) ,
aes ( X = Stupeň a = Počítajte, plňte = stupňa ) ) +
geom_bar ( stat = 'identita' ) +
laboratóriách ( titul = 'Rozdelenie známok' ,
X = 'stupeň' ,
a = 'počítať' ) +
scale_fill_manual ( hodnoty = c ( 'A' = 'zelená' , 'B' = 'Fialová' , 'C' = 'Ružová' ,
'D' = 'oranžový' , 'F' = 'červená' ) ) +
theme_minimal ( )
}
} )
}
shinyApp ( ui, server )

Po spustení tohto kódu sme dostali interaktívne rozhranie, do ktorého sme pridali nejaké značky a klikli na tlačidlo „Poďme vypočítať známky“.

Zobrazí sa tabuľka, ktorá obsahuje skóre a známky študentov, nasledovaná stĺpcovým grafom rozloženia známok v rôznych farbách.

Záver

Táto príručka vysvetľuje dôležitosť používania balíka Shiny v jazyku R cez RStudio. Na doplnenie nášho vysvetlenia sme vytvorili interaktívnu webovú aplikáciu pre systém hodnotenia študentov v R kóde s využitím balíka „Shiny“.