Hogyan készítsünk interaktív webalkalmazásokat a Shiny segítségével R

Hogyan Keszitsunk Interaktiv Webalkalmazasokat A Shiny Segitsegevel R



Az R Shiny keretrendszernek köszönhetően, amely az RStudio csomagja, viszonylag egyszerű dinamikus webalkalmazások létrehozása az R segítségével. A Shiny előnye, hogy lehetővé teszi az R-kód internetes elhelyezését, így a felhasználók szélesebb köre számára elérhetőbbé válik. Az R Shiny segítségével nagyon hatékony adatjelentéseket és látványelemeket hozhat létre, amelyek lehetővé teszik a felhasználó számára az adatkészlet elemzését. A Shiny komponensek mellett a HTML elemek is felhasználhatók a program tartalmának megtervezésére. A mai cikk végigvezeti Önt egy interaktív webalkalmazás létrehozásának folyamatán, amely az R's Shiny csomagot használja. Ehhez győződjön meg arról, hogy az „RStudio” már telepítve van.

Telepítse a Shiny Package-et az RStudióban

Mielőtt egy interaktív webalkalmazás felé haladnánk az RStudio-n belül, a „Shiny” csomagnak már telepítve kell lennie benne. Ehhez ki kell bontania az RStudio „Eszközök” menüjét, majd az „Install Packages” opciót. A megnyíló ablakban meg kell említeni a telepíteni kívánt csomagot, azaz „fényes”, és meg kell érinteni a „Telepítés” gombot. Az RStudio telepíti a fényes csomagot az RStudio konzolra.







Kezdje el a Shiny használatát az R-ben

A Shiny in R használatának megkezdéséhez létre kell hoznia egy új R fájlt az RStudio első helyén található „Fájl” menü segítségével. Bontsa ki, és használja az „Új fájl” opciót, majd az „R Script” opciót. A „névtelen” szkriptfájl megnyílik az RStudio alkalmazásban. Nevezze át „R” fájlra a kívánt helyen.



Most töltse be az interaktív alkalmazás létrehozásához szükséges csomagokat R-ben, azaz használja az R „könyvtár” funkcióját. Az „if” utasítások a korábban nem telepített csomagok telepítésére szolgálnak. A Shiny csomag segítségével interaktív felületet lehet létrehozni webes alkalmazásokhoz, valamint néhány grafikus megjelenítést. A „dplyr” csomag főként az R-ben történő adatkezelés megkönnyítésére szolgál néhány hasznos funkció használatával.



Végül a „ggplot2” csomag az adatok megjelenítésének nagyszerű forrásaként van betöltve, testreszabott és hatékony grafikonok létrehozásával.





ha ( ! requestNamespace ( 'fényes' , halkan = IGAZ ) ) {

telepítés. csomagokat ( 'fényes' )

}

ha ( ! requestNamespace ( 'dplyr' , halkan = IGAZ ) ) {

telepítés. csomagokat ( 'dplyr' )

}

ha ( ! requestNamespace ( 'ggplot2' , halkan = IGAZ ) ) {

telepítés. csomagokat ( 'ggplot2' )

}

könyvtár ( fényes )

könyvtár ( dplyr )

könyvtár ( ggplot2 )

Építsen fel egy interaktív vizsgaosztályozó rendszert

Ebben az oktatóanyagban létrehozunk egy „Vizsgaértékelési Rendszert” a tanulók számára, hogy elért osztályzataikat a 100-ból szerzett pontszámok alapján kapják meg. A mellékelt szkript egy Shiny alkalmazás „ui” komponense, amely meghatározza a program kialakítását és megjelenését. A program. A program létrehoz egy fluidPage-et, egy adaptálható dizájnt, amely a böngészőablakhoz igazítható.

A „titlePanel” és egy „sidebarLayout” a „fluidPage” utódai. A program „Exam Grading System” címe csak annyi, ami a „titlePanel”-ben jelenik meg. A „sidebarPanel” és a „mainPanel” az a két rész, amelyet a „sidebarLayout” használ az alkalmazás felosztására. A „sidebarPanel” egy pár bemenetet tartalmaz: egy „textAreaInput” nevű „pontszám” és egy „actionButton” nevű „számítás”.



Soronként egy pontszám adható meg tanulónként a „textAreaInput” segítségével. Az érdemjegy értékelése az „actionButton” gombbal indítható. A „mainPanel”-en egy pár kimenet található: egy „Result” nevű „tableOutput” és egy „ResultGraph” nevű „plotOutput”. Mind a „tableOutput”, mind a „plotOutput” grafikon formájában mutatja be a számítás eredményeit.

ui <- fluidPage (

title Panel ( 'Vizsga osztályozási rendszer' ) ,
oldalsávElrendezés (
oldalsávPanel (
textAreaInput ( 'pontszám' , 'Adja meg a tanulók pontszámait (soronként egy):' , '' ) ,
actionButton ( 'kiszámítja' , 'Számítsunk osztályzatokat' )
) ,
főpanel (
táblázatKimenet ( 'Eredmény' ) ,
plotOutput ( 'ResultGraph' )
) ) )

A szerver metódus létrehozza az alkalmazás szerveroldali logikáját. A tanulók pontszámait kezdetben egy „data” nevű reaktív változóban tárolják. Ehhez a „számítás” gombot az R „observeEvent” metódusa figyeli. A gomb megnyomása után a kód először számértékké konvertálja a szövegmezőbe beírt értékeket.

Minden pontszámot egy sortörés követ, a „\n” segítségével új pontszámot írhat be a következő sorba. A módszer a talált pontszámot az „adat” változóba helyezi. Ha a felhasználó nem adott meg pontszámot, a metódus hibás üzenetet jelenít meg.

szerver <- funkció ( bemenet kimenet ) {

adat <- reaktívVal ( NULLA )

megfigyelésEsemény ( input$calculate, {

pontszám <- mint. numerikus ( listázatlan ( strsplit ( input$score, ' \n ' ) ) )

ha ( hossz ( pontszám ) > 0 ) {

adat ( pontszám )

} más {

adat ( NULLA )

showModal ( modalDialog (

cím = 'Hiba' ,

'Hiba: Kérjük, adjon hozzá értéket!' ,

easyClose = IGAZ

) )

}

} )

Két kimenet, az „output$Result” plus az „output$ResultGraph” van megadva a tanulói jegyek és elért osztályzatok megjelenítésére. A renderTable() dinamikus metódus egy adattáblázatot készít a tanuló teszteredményeiről és érdemjegyeiről, amely „output$Result” címkével van ellátva. A renderPlot() metódus, amely szintén reaktív, oszlopdiagramot generál a tanulói érdemjegyekhez, és hasonló módon elmenti az „output$ResultGraph” kimenetbe.

Ezért ezeket minden alkalommal felül kell vizsgálni, amikor a bemeneti adatok frissülnek. Az if (!is.null(data())) kifejezés határozza meg, hogy a fogadott adat nulla-e vagy sem. Az „if” utasítás szkriptje végrehajtásra kerül, ha nem üres. A tanulók pontszámainak vektora alkotja a bemeneti „adatokat”. Minden tanuló a pontszáma alapján osztályzatot kap a case_when() metódussal. A tanulói érdemjegyeket és tesztjegyeket tartalmazó adatkeret a data.frame() metódussal jön létre. Az adatkeret a következő oszlopokkal egészül ki: „Diák”, „Eredmény” és „Osztályzat”. Az osztályzat eloszlása ​​egy „GradeCount” nevű táblába kerül összeállításra a table() metódussal.

output$Result <- renderTable ( {

ha ( ! van. nulla ( adat ( ) ) ) {

évfolyamok <- eset_mikor (

adat ( ) > 80 ~ 'A' ,

adat ( ) > 60 ~ 'B' ,

adat ( ) > 40 ~ 'C' ,

adat ( ) > 30 ~ 'D' ,

IGAZ ~ 'F'

)

adat. keret ( Diák = 1 : hossz ( adat ( ) ) , Pontszám = adat ( ) , Fokozat = évfolyamok )

}

} )

output$ResultGraph <- renderPlot ( {

ha ( ! van. nulla ( adat ( ) ) ) {

évfolyamok <- eset_mikor (

adat ( ) > 80 ~ 'A' ,

adat ( ) > 60 ~ 'B' ,

adat ( ) > 40 ~ 'C' ,

adat ( ) > 30 ~ 'D' ,

IGAZ ~ 'F'

)

GradeCount <- asztal ( évfolyamok )

Az oszlopdiagram a „ggplot2” könyvtár használatával jön létre. A Count (az egyes osztályzatokat megszerző tanulók teljes száma) és az Osztályozás oszlop egy DataFrame-ben jön létre. A geom_bar() metódus segítségével egy oszlopdiagramot állítunk elő, amelyen az „x tengelyen” a „Grade” adatok, az „y tengelyen” pedig a „Count” adatok láthatók. A stat = “identity” opció arra utasítja a ggplot2-t, hogy mindenféle átalakítás nélkül használja fel a tényleges adatokat. Egy cím, egy x-tengely és egy y-tengely címke mind hozzáadásra kerül a „labs” módszerrel. A sáv színei a scale_fill_manual() metódussal vannak hozzárendelve. A szükségtelen rácsvonalak és fedvénykomponensek eltávolítása a theme_minimal() metódussal történik. A shinyApp(ui, server) metódus létrehoz egy alkalmazást.

ggplot ( adat = adat. keret ( Fokozat = neveket ( GradeCount ) , Számol = mint. numerikus ( GradeCount ) ) ,
aes ( x = évfolyam, és = Számolj, tölts = Fokozat ) ) +
geom_bar ( statisztika = 'identitás' ) +
laborok ( cím = 'Fokozati eloszlás' ,
x = 'Fokozat' ,
és = 'Számol' ) +
scale_fill_manual ( értékeket = c ( 'A' = 'zöld' , 'B' = 'lila' , 'C' = 'rózsaszín' ,
'D' = 'narancs' , 'F' = 'piros' ) ) +
theme_minimal ( )
}
} )
}
shinyApp ( ui, szerver )

A kód futtatásakor egy interaktív felületet kaptunk, ahol néhány jelölést adtunk, és rákattintottunk a „Számítsunk osztályzatokat” gombra.

Megjelenik a tanulói pontszámokat és osztályzatokat tartalmazó táblázat, majd az osztályzatok eloszlásának oszlopdiagramja különböző színekben.

Következtetés

Ez az útmutató elmagyarázza a Shiny csomag használatának fontosságát az R nyelven az RStudio segítségével. Magyarázatunk kiegészítéseként a „Shiny” csomag felhasználásával interaktív webalkalmazást építettünk a tanulók osztályozási rendszeréhez R kódban.