Jak vytvářet interaktivní webové aplikace s Shiny v R

Jak Vytvaret Interaktivni Webove Aplikace S Shiny V R



Díky frameworku R Shiny, balíčku od RStudio, je vytváření dynamických webových aplikací s R relativně snadné. Výhodou Shiny je, že umožňuje umístit váš R kód na web, čímž je přístupnější širšímu okruhu uživatelů. S R Shiny můžete vytvářet velmi výkonné datové sestavy a vizuály, které uživateli umožňují analyzovat datovou sadu. Spolu s komponenty Shiny mohou být prvky HTML použity k návrhu obsahu programu. Dnešní článek vás provede procesem vytváření interaktivní webové aplikace využívající balíček R's Shiny. Za tímto účelem se ujistěte, že máte již nainstalováno „RStudio“.

Nainstalujte Shiny Package v RStudio

Než přistoupíme k vytvoření interaktivní webové aplikace v rámci RStudia, měli bychom mít v ní již nainstalovaný balíček „Shiny“. Chcete-li to provést, musíte rozbalit nabídku „Nástroje“ RStudia a poté možnost „Instalovat balíčky“. V otevřeném okně musíte zmínit balíček, který chcete nainstalovat, tedy „shiny“, a klepnout na tlačítko „Instalovat“. RStudio nainstaluje lesklý balíček do konzole RStudio.







Začněte s Shiny v R

Chcete-li začít s Shiny v R, musíte vytvořit nový soubor R pomocí nabídky „Soubor“ umístěné na prvním místě RStudia. Rozbalte jej a použijte volbu „Nový soubor“ následovanou volbou „Skript R“. Soubor skriptu „bez názvu“ se otevře v RStudiu. Přejmenujte jej na soubor „R“ v požadovaném umístění.



Nyní načtěte potřebné balíčky potřebné k sestavení interaktivní aplikace v R, tj. pomocí funkce „knihovna“ R. Příkazy „if“ se používají k instalaci balíčků, které dříve nebyly nainstalovány. Balíček Shiny se používá k vytvoření interaktivního rozhraní pro webové aplikace spolu s některými grafickými vizualizacemi. Balíček „dplyr“ se používá hlavně k usnadnění manipulace s daty v R pomocí některých užitečných funkcí.



A konečně, balíček „ggplot2“ je načten jako skvělý zdroj vizualizace dat vytvářením přizpůsobených a výkonných grafů.





-li ( ! vyžadovat jmenný prostor ( 'lesklý' , potichu = SKUTEČNÝ ) ) {

Nainstalujte. balíčky ( 'lesklý' )

}

-li ( ! vyžadovat jmenný prostor ( 'dplyr' , potichu = SKUTEČNÝ ) ) {

Nainstalujte. balíčky ( 'dplyr' )

}

-li ( ! vyžadovat jmenný prostor ( 'ggplot2' , potichu = SKUTEČNÝ ) ) {

Nainstalujte. balíčky ( 'ggplot2' )

}

knihovna ( lesklý )

knihovna ( dplyr )

knihovna ( ggplot2 )

Vybudujte si interaktivní systém hodnocení zkoušek

V rámci tohoto tutoriálu vytvoříme „systém hodnocení zkoušek“, aby studenti získali dosažené známky prostřednictvím známek, které získají ze 100. Poskytnutý skript je součástí „ui“ aplikace Shiny, která určuje design a vzhled Program. Program vygeneruje fluidPage, adaptabilní design, který lze upravit tak, aby se přizpůsobil oknu prohlížeče.

„titlePanel“ a „sidebarLayout“ jsou potomky „fluidPage“. Název programu „Systém klasifikace zkoušek“ je vše, co se zobrazuje v „Panelu titulků“. „sidebarPanel“ a „mainPanel“ jsou dvě sekce, které „sidebarLayout“ používá k rozdělení aplikace. V „sidebarPanel“ je zahrnuta dvojice vstupů: „textAreaInput“ s názvem „score“ plus „actionButton“ s názvem „calculate“.



Jedno skóre na řádek lze zadat pro každého studenta pomocí „textAreaInput“. Hodnocení stupněm lze spustit pomocí „actionButton“. V „hlavním panelu“ je přítomna dvojice výstupů: „tableOutput“ s názvem „Result“ plus „plotOutput“ s názvem „ResultGraph“. Jak „tableOutput“, tak „plotOutput“ budou prezentovat výsledky výpočtu ve formě grafu.

ui <- fluidPage (

titlePanel ( 'Systém hodnocení zkoušek' ) ,
postranní panelRozvržení (
postranní panelPanel (
textAreaInput ( 'skóre' , 'Zadejte skóre pro studenty (jedno na řádek):' , '' ) ,
akční tlačítko ( 'vypočítat' , 'Pojďme spočítat známky' )
) ,
hlavní panel (
tableOutput ( 'Výsledek' ) ,
plotOutput ( 'Graf výsledků' )
) ) )

Serverová metoda stanoví logiku aplikace na straně serveru. Známky pro studenty jsou zpočátku uloženy v reaktivní proměnné s názvem „data“. Za tímto účelem je tlačítko „vypočítat“ monitorováno metodou „observeEvent“ R. Po spuštění tlačítka kód nejprve převede hodnoty zadané do textového pole na číselné hodnoty.

Po každém skóre následuje zalomení řádku pomocí „\n“ pro vložení nového skóre na další řádek. Metoda umístí jakékoli skóre, které najde, do proměnné „data“. Pokud uživatel nezadal žádné skóre, metoda zobrazí zprávu s chybou.

server <- funkce ( vstup výstup ) {

data <- reactiveVal ( NULA )

pozorovatUdálost ( vstup $ vypočítat, {

skóre <- tak jako. číselné ( zrušit seznam ( strsplit ( vstup $ skóre, ' \n ' ) ) )

-li ( délka ( skóre ) > 0 ) {

data ( skóre )

} jiný {

data ( NULA )

showModal ( modální dialog (

titul = 'Chyba' ,

'Chyba: Přidejte hodnotu!' ,

easyClose = SKUTEČNÝ

) )

}

} )

Dva výstupy, „výstup$Výsledek“ plus „Výstup$VýsledekGraph“, jsou určeny pro zobrazení známek a dosažených známek studentů. Dynamická metoda renderTable() vytváří datovou tabulku studentových testových známek a známek, která je označena jako „output$Result“. Metoda renderPlot(), která je rovněž reaktivní, generuje sloupcový graf pro hodnocení studentů a podobně jej uloží do výstupu „output$ResultGraph“.

Budou proto přezkoumány při každé aktualizaci vstupních dat. Výraz if (!is.null(data())) určuje, zda jsou přijímaná data nulová. Skript příkazu „if“ se provede, pokud není prázdný. Vektor skóre pro studenty tvoří vstupní „data“. Každý student dostane známku na základě skóre pomocí metody case_when(). Pomocí metody data.frame() se vytvoří datový rámec obsahující známky studentů a známky testu. Do datového rámce jsou přidány následující sloupce: „Student“, „Skóre“ a „Stupeň“. Rozdělení hodnocení je sestaveno v tabulce nazvané „GradeCount“ pomocí metody table().

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

-li ( ! je. nula ( data ( ) ) ) {

stupně <- case_when (

data ( ) > 80 ~ 'A' ,

data ( ) > 60 ~ 'B' ,

data ( ) > 40 ~ 'C' ,

data ( ) > 30 ~ 'D' ,

SKUTEČNÝ ~ 'F'

)

data. rám ( Student = 1 : délka ( data ( ) ) , Skóre = data ( ) , Školní známka = stupně )

}

} )

výstup$ResultGraph <- renderPlot ( {

-li ( ! je. nula ( data ( ) ) ) {

stupně <- case_when (

data ( ) > 80 ~ 'A' ,

data ( ) > 60 ~ 'B' ,

data ( ) > 40 ~ 'C' ,

data ( ) > 30 ~ 'D' ,

SKUTEČNÝ ~ 'F'

)

GradeCount <- stůl ( stupně )

Sloupcový graf je vytvořen pomocí knihovny „ggplot2“. Počet (celkový počet studentů, kteří získali každou známku) a sloupec Známka jsou vytvořeny v DataFrame. Pomocí metody geom_bar() se vytvoří sloupcový graf s údaji „Stupeň“ na „ose x“ a údaji „Počet“ na „ose y“. Volba stat = „identity“ dává pokyn ggplot2, aby využil aktuální data bez jakékoli transformace. Název, štítek osy x a štítek osy y se přidávají pomocí metody „labs“. Barvy pruhu jsou přiřazeny pomocí metody scale_fill_manual(). Nepotřebné čáry mřížky a překryvné komponenty se odstraní pomocí metody theme_minimal(). Metoda shinyApp(ui, server) vytvoří aplikaci.

ggplot ( data = data. rám ( Školní známka = jména ( GradeCount ) , Počet = tak jako. číselné ( GradeCount ) ) ,
aes ( X = Stupeň a = Počítejte, plňte = Školní známka ) ) +
geom_bar ( stat = 'identita' ) +
laboratoře ( titul = 'Rozdělení hodnocení' ,
X = 'Školní známka' ,
a = 'Počet' ) +
scale_fill_manual ( hodnoty = C ( 'A' = 'zelená' , 'B' = 'nachový' , 'C' = 'růžový' ,
'D' = 'oranžový' , 'F' = 'Červené' ) ) +
theme_minimal ( )
}
} )
}
shinyApp ( ui, server )

Po spuštění tohoto kódu jsme získali interaktivní rozhraní, kam jsme přidali nějaké značky a klikli na tlačítko „Pojďme vypočítat známky“.

Zobrazí se tabulka, která obsahuje skóre a známky studentů, následovaná sloupcovým grafem rozložení známek v různých barvách.

Závěr

Tato příručka vysvětluje důležitost použití balíčku Shiny v jazyce R prostřednictvím RStudio. Abychom doplnili naše vysvětlení, vytvořili jsme interaktivní webovou aplikaci pro systém hodnocení studentů v kódu R s využitím balíčku „Shiny“.