R Shiny Tutorial: Vše, co potřebujete vědět



Tento výukový program R Shiny vám poskytne podrobné a komplexní znalosti o R Shiny a o tom, jak vytvářet interaktivní webové aplikace.

S vývojem technologie se objevily novější nástroje a rámce pro vytváření webových aplikací, které zobrazují statistiky, mapy a grafy v reálném čase. Protože tyto funkce vyžadují vysoké zpracování a synchronizaci, používají se programovací jazyky ke zkrácení doby načítání serveru. V tomto výukovém programu R Shiny vysvětlím, jak nejlépe využít R v dynamických webových aplikacích.

Pokryjeme a porozumíme následujícím tématům:





Co je R Shiny?

Shiny je balíček R, který umožňuje uživatelům vytvářet interaktivní webové aplikace. Tento nástroj vytváří ekvivalentní webovou aplikaci HTML z lesklého kódu. Integrujeme nativní HTML a CSS kód s funkcemi R Shiny, aby byla aplikace prezentovatelná. Shiny kombinuje výpočetní sílu R s interaktivitou moderního webu.Shiny vytváří webové aplikace, které jsou nasazeny na webu pomocí vašeho serveru nebo hostingových služeb R Shiny.

Vlastnosti R Shiny:

  • Vytvářejte jednoduché aplikace se základními nebo žádnými znalostmi webových nástrojů
  • Integrujte Shiny s nativními webovými nástroji a zvyšte flexibilitu a produktivitu
  • Předpřipravené funkce I / O a vykreslování
  • Snadné vykreslení obsahu aplikace bez opakovaného načítání
  • Funkce pro přidání vypočítaných (nebo zpracovaných) výstupů ze skriptů R.
  • Přidejte živé sestavy a vizualizace.

To nás přivádí k otázce:



Jak se Shiny liší od tradičních aplikací?

Pojďme si vzít příklad aplikace počasí, kdykoli uživatel obnoví / načte stránku nebo změní jakýkoli vstup, měl by aktualizovat celou stránku nebo část stránky pomocí JS. To zvyšuje zátěž na straně serveru pro zpracování. Shiny umožňuje uživateli izolovat nebo vykreslit (nebo znovu načíst) prvky v aplikaci, což snižuje zatížení serveru. Procházení stránek bylo v tradičních webových aplikacích snadné, ale u aplikací Shiny to bylo obtížné. Struktura kódu hraje hlavní roli v porozumění a ladění kódu. Tato funkce je zásadní pro lesklé aplikace s ohledem na jiné aplikace.

Pojďme k dalšímu tématu v tutoriálu R Shiny, instalace balíčku R Shiny.

Instalace R Shiny

Instalace Shiny je jako instalace jakéhokoli jiného balíčku v R. Přejít na R konzole a spuštěním níže uvedeného příkazu nainstalujte balíček Shiny.



install.packages ('lesklý')

Nainstalujte si R Shiny - R shiny tutorial - Edureka

Po instalaci načtěte balíček Lesklé a vytvořte Lesklé aplikace.

knihovna (lesklá)

Než se v tomto lesklém výukovém programu posuneme dále, podívejme se a pochopíme strukturu lesklé aplikace.

Struktura lesklé aplikace

Shiny se skládá ze 3 složek:

  1. Uživatelské rozhraní
  2. Server
  3. ShinyApp

jeden.Funkce uživatelského rozhraní

Uživatelské rozhraní (UI) funkce definuje rozložení a vzhled aplikace. Do aplikace můžete přidat značky CSS a HTML, aby byla aplikace lépe prezentovatelná. Funkce obsahuje všechny vstupy a výstupy, které se mají zobrazit v aplikaci. Každý prvek (rozdělení nebo karta nebo nabídka) uvnitř aplikace je definován pomocí funkcí. K nim se přistupuje pomocí jedinečného ID, jako jsou prvky HTML.Pojďme se dozvědět více o různýchfunkce použité v aplikaci.

Lesklé funkce rozložení

  • headerPanel ()přidat nadpis do aplikace. titlePanel () definuje podnadpis aplikace. Pro lepší pochopení viz následující obrázek headerPanel a názevPanel .
  • SidebarLayout ()definuje rozložení, které se má podržet postranní panel a mainPanel elementy. Rozložení rozděluje obrazovku aplikace na boční panel a hlavní panel. Například na obrázku níže je červený obdélník mainPanel oblast a oblast černého obdélníku svisle je postranní panel plocha.

  • wellPanel ()definuje kontejner, který obsahuje více objektů aplikace vstup / výstup ve stejné mřížce.
  • tabsetPanel ()vytvoří kontejner pro uložení záložek. tabPanel () přidá kartu do aplikace definováním prvků a komponent karet. Na obrázku níže černáobdélník je tabsetPanel objekt a červený obdélník je tabPanel objekt.
  • navlistPanel ()poskytuje boční nabídku s odkazy na různé panely karet podobné tabsetPanel () jako vertikální seznam na levé straně obrazovky. Na obrázku níže je černý obdélník navlistPanel objekt a červený obdélník je tabPanel objekt.

Spolu s funkcemi Shiny layout můžete do každého vstupního widgetu v aplikaci přidat také vložené CSS.Aplikace Shiny obsahuje funkce webových technologií spolu s lesklými funkcemi R a funkcemi, které ji obohacují. Používejte značky HTML v aplikaci Shiny pomocí značky $.

Vaše rozvržení je připraveno, je čas přidat do aplikace widgety. Shiny poskytuje různé uživatelské vstupní a výstupní prvky pro interakci s uživatelem. Pojďme diskutovat o několika vstupních a výstupních funkcích.

Lesklé vstupní funkce

Každý vstupní widget má štítek, ID, další parametry, jako je výběr, hodnota, vybrané, min., Max. Atd.

co je vícenásobné dědictví v Javě
  • selectInput ()- vytvořit rozevírací prvek HTML.
selectInput ('select', h3 ('Select box'), choices = list ('Choice 1' = 1, 'Choice 2' = 2, 'Choice 3' = 3), selected = 1)

  • numericInput ()- oblast pro zadání čísla nebo textu.
dateInput ('num', 'Date input', value = '2014-01-01') numericInput ('num', 'Numeric input', value = 1) textInput ('num', 'Numeric input', value = ' Zadejte text ... ')

  • radioButtons ()- vytvořit přepínače pro vstup uživatele -.
radioButtons ('radio', h3 ('Radio buttons'), choices = list ('Choice 1' = 1, 'Choice 2' = 2, 'Choice 3' = 3), selected = 1)

Lesklé výstupní funkce

Shiny poskytuje různé výstupní funkce, které se zobrazují R výstupy, jako jsou grafy, obrázky, tabulky atd., které zobrazují odpovídající R objekt.

  • plotOutput ()- zobrazit objekt R plotru.
plotOutput'top_batsman ')
  • tableOutput ()- zobrazí výstup jako tabulku.
tableOutput'player_table ')

2. Funkce serveru

Server funkce dvylepšuje logiku aplikace Shiny na straně serveru. Zahrnuje vytváření funkcí a výstupů, které používají vstupy k produkci různých druhů výstupu. Každý klient (webový prohlížeč) volá funkci serveru při prvním načtení aplikace Shiny. Každý výstup ukládá návratovou hodnotu z funkcí vykreslení.

Tyto funkce zachycují výraz R a provádějí výpočty a předběžné zpracování výrazu. Použijte funkci render *, která odpovídá výstupu, který definujete. Přistupujeme k vstupním widgetůmpoužitím zadejte $ [widget-id] . Tyto vstupní proměnné jsou reaktivní hodnoty. Jakékoli přechodné proměnné vytvořené pomocí vstupních proměnných je třeba reaktivně použít reaktivní ({}) . Přístup k proměnným pomocí ().

poskytnout * funkce provádějí výpočet uvnitř funkce serveru a ukládají do výstupních proměnných. Výstup je třeba uložit pomocí output $ [název výstupní proměnné] . Každý poskytnout * funkce přebírá jediný argument, tj. výraz R obklopený složenými závorkami, {}.

3. Funkce ShinyApp

shinyApp ()funkce je srdcemaplikace, která volá CIBULE a serveru funkce pro vytvoření lesklé aplikace.

Níže uvedený obrázek ukazuje obrys aplikace Shiny.

Pojďme přejít k dalšímu segmentu v tutoriálu R Shiny a vytvoříme první aplikaci R Shiny.

Vytvořte lesklý webový projekt

Jít do Soubor a vytvořit Nový projekt v libovolném adresáři -> Lesklá webová aplikace -> [Název adresáře lesklé aplikace]. Zadejte název adresáře a klikněte na OK .

Každý nový projekt aplikace Shiny bude obsahovat příklad histogramu, který porozumí základům aplikace Shiny. Aplikace histogramu obsahuje posuvník následovaný histogramem, který aktualizuje výstup pro změnu posuvníku. Níže je uveden výstup aplikace histogramu.

Chcete-li spustit aplikaci Shiny, klikněte na ikonu Spusťte aplikaci v pravém horním rohu podokna zdroje. Aplikace Shiny zobrazuje posuvný widget, který načte počet přihrádek a vykreslí histogram podle vstupu.

Nyní, když jste pochopili strukturu a způsob spuštění aplikace Shiny. Pojďme k vytvoření naší první lesklé aplikace.

kulaté dvojité na int java

Vytvořte první lesklou aplikaci

Můžete buď vytvořit nový projekt, nebo pokračovat ve stejném pracovním adresáři. V tomto výukovém programu R Shiny vytvoříme jednoduchou aplikaci Shiny pro zobrazení statistik IPL. Datovou sadu použitou v aplikaci lze stáhnout tady . Datová sada obsahuje 2 soubory, deliverys.csv obsahuje dodávky bodů za každý míč (nad) pálkaře, nadhazovače, podrobnosti o běhu a match.csv soubor obsahuje podrobnosti zápasu, jako je umístění zápasu, losování, místo konání a podrobnosti hry. Níže uvedená aplikace vyžaduje základní znalosti o dplyr a porozumět níže uvedenému výukovému programu.

Podle níže uvedených kroků vytvořte svou první lesklou aplikaci.

Krok 1 : Vytvořte obrys lesklé aplikace.

Vymažte existující kód kromě definic funkcí v aplikace . R soubor.

Krok 2 : Načíst knihovny a data.

V tomto kroku načteme požadované balíčky a data. Poté vyčistěte a transformujte extrahovaná data do požadovaného formátu. Přidejte níže uvedený kód CIBULE a serveru funkce.

Kód:

knihovna (lesklá) knihovna (tidyverse) # Načítání datové sady --------------------------------------- ---------------- deliveryies = read.csv ('C: UsersCherukuri_SindhuDownloadsdeliveries.csv', stringsAsFactors = FALSE) odpovídá = read.csv ('C: UsersCherukuri_SindhuDownloadsmatches.csv', stringsAsFactors = FALSE) # Čištění datové sady --------------------------------------------- --------- jména (shody) [1] = 'match_id' IPL = dplyr :: internal_join (zápasy, dodávky)

Vysvětlení :

Načtou se první 2 řádky uklizený a Lesklý balík. Další 2 řádky načítají dodávky datových sad a shodují se a ukládají do proměnnýchdodávkyazápasy. Poslední 2 řádky aktualizují název sloupcezápasydatová sada k provedení vnitřního spojení sdodávkystůl. Výsledek spojení uložíme doIPLproměnná.

Krok 3 : Vytvořte rozvržení aplikace Shiny .

Jak již bylo řečeno, CIBULE Funkce definuje vzhled aplikace, widgety a objekty v aplikaci Shiny.Pojďme si to probrat podrobně.

Kód

cibule<- fluidPage( headerPanel('IPL - Indian Premier League'), tabsetPanel( tabPanel(title = 'Season', mainPanel(width = 12,align = 'center', selectInput('season_year','Select Season',choices=unique(sort(matches$season, decreasing=TRUE)), selected = 2019), submitButton('Go'), tags$h3('Players table'), div(style = 'border:1px black solidwidth:50%',tableOutput('player_table')) )), tabPanel( title = 'Team Wins & Points', mainPanel(width = 12,align = 'center', tags$h3('Team Wins & Points'), div(style = 'float:leftwidth:36%',plotOutput('wins_bar_plot')), div(style = 'float:rightwidth:64%',plotOutput('points_bar_plot')) ) )))

The CIBULE funkce obsahuje a headerPanel () nebo titlePanel () a následuje tabsetPanel definovat více karet v aplikaci. tabPanel () definuje objekty pro každou záložku. Každý tabPanel () se skládá z názvu a mainPanel (). mainPanel () vytvoří kontejner o šířce 12, tj. celé okno a zarovná vstupní a výstupní objekty do středu.

Vysvětlení

Aplikace se skládá ze 2 karet: Sezóna a Výhry a body týmu.

Sezóna karta se skládá z vyberteVstup ( ) , tlačítko Odeslat a tabulka. season_year se používá ke čtení vstupu z lje hodnot. tableOutput () zobrazí výstup tabulky vypočítaný na funkci serveru.Tabulka player_table se zobrazí pod tlačítkem, které je definováno ve funkci serveru, o kterém bude pojednáno v dalším kroku. Výhry a body týmu Záložka zobrazuje týmové výhry a body v příslušných sloupcových grafech. plotOutput () zobrazí výstupy vrácené z vykreslení * funkce. Všechny výstupní, vstupní funkce jsou uzavřeny uvnitř značky div, aby se přidal vložený styl.

Nyní, když jsme obeznámeni s funkcí ui, pojďme pokračovat v porozumění a používání funkce serveru v našem tutoriálu R Shiny.

Krok 4: Přidejte příkazy funkce serveru

The serveru funkce zahrnuje vytváření funkcí a výstuputs, které používají uživatelské vstupy k produkci různých druhů výstupu. Thefunkce serveru je vysvětlena krok za krokem níže.

zápasy_rok = reaktivní ({zápasy%>% filtr (sezóna == vstup $ sezóna_rok))) playoff = reaktivní ({n-tý (řazení (zápasy_rok () $ match_id, klesající = PRAVDA), 4)}) zápasy_hraný = reaktivní ({zápasy_rok) ()%>% filtr (match_id% group_by (team1)%>% sumarizovat (count = n ())}) t2 = reaktivní ({match_played ()%>% group_by (team2)%>% sumarizovat (count = n ( ))}) wl = reaktivní ({match_played ()%>% filtr (vítěz! = '')%>% group_by (vítěz)%>% shrnout (no_of_wins = n ())}) wl1 = reaktivní ({odpovídá_hraje ( )%>% group_by (vítěz)%>% sumarizuje (no_of_wins = n ())}) svázaný = reaktivní ({match_played ()%>% filtr (vítěz == '')%>% vybrat (team1, team2)} ) playertable = reaktivní ({data.frame (Teams = t1 () $ team1, Played = t1 () $ count + t2 () $ count, Wins = wl () $ no_of_wins, Points = wl () $ no_of_wins * 2) })

Výše uvedený kódový filtr odpovídá zápasům, které se každý rok hrají před play-off, a výsledek ukládá do proměnné match_played.player_tabletabulka obsahuje týmové statistiky zápasů, tj. odehraných, vítězství a bodů. Proměnnézápasy_hrané,player_table,t1,svázanýatd. jsou všechny střední reaktivní hodnoty . K těmto proměnným je třeba přistupovat pomocí (), jak je uvedeno v kódu výše.player_tablese zobrazuje pomocí funkce renderTable. Dále vytvořte výstupní proměnnou pro uložení playertable.

výstup $ player_table = renderTable ({playertable ()})

Nyní umožňuje vytvářet sloupcové grafy, které zobrazují vítězství a body dosažené každým týmem v sezóně. Níže uvedený kód zobrazuje sloupcové grafy pomocí ggplot. renderPlot () načte objekt ggplot a výsledek uloží do proměnnéwins_bar_plot.Ggplot kód je samozřejmý, zahrnuje základní grafické a mapovací funkce pro úpravu legendy, štítků a grafů.

výstup $ wins_bar_plot = renderPlot ({ggplot (wl1 () [2: 9,], aes (vítěz, no_of_wins, fill = vítěz)) + geom_bar (stat = 'identita') + theme_classic () + xlab ('týmy') + ylab ('Number Of Wins') + téma (axis.text.x = element_text (color = 'white'), legend.position = 'none', axis.title = element_text (size = 14), plot.background = element_rect (color = 'white')) + geom_text (aes (x = vítěz, (no_of_wins + 0,6), label = no_of_wins, size = 7))})) výstup $ points_bar_plot = renderPlot ({ggplot (playertable (), aes ( Týmy, Body, výplně = Týmy)) + geom_bar (stat = 'identita', velikost = 3) + theme_classic () + téma (axis.text.x = element_text (color = 'white')), legend.text = element_text ( size = 14), axis.title = element_text (size = 14)) + geom_text (aes (Teams, (Points + 1), label = Points, size = 7))})

Krok 5: Spusťte aplikaci Shiny.

Klikněte na Spustit aplikaci. Po úspěšném spuštění bude vaše aplikace Shiny vypadat níže. Jakákoli chyba nebo varovánísouvisející s aplikací, zobrazí je v R Console.

java k moci operátora

Tab1 - Sezóna

Tab2 - Výhry a body týmu

Uvidíme jakzříditÚčet Shinyapps.io k nasazení vašich aplikací Shiny.

Založte si účet Shinyapps.io

Jít do Shinyapps.io a přihlaste se pomocí svých údajů, poté uveďte jedinečný název účtu pro stránku a uložte jej. Po úspěšném uložení se zobrazí podrobný postup nasazení aplikací z konzoly R. Podle níže uvedeného postupu nakonfigurujte svůj účet v Rstudiu.

Krok 1. Nainstalujte rsconnect

install.packages ('rsconnect')

Krok 2. Autorizovat účet

The rsconnect balíček musí být autorizován k vašemu účtu pomocí tokenu a tajemství. Chcete-li to provést, zkopírujte celý příkaz, jak je znázorněno níže na stránce řídicího panelu v R řídicí panel. Jakmile úspěšně zadáte příkaz v R, teď vás autorizuji k nasazení aplikací do vašeho účtu Shinyapps.io.

rsconnect :: setAccountInfo (name = 'název účtu', token = 'token', tajemství = 'tajemství')

Krok 3. Nasadit aplikaci

Použijte následující kód k nasazení lesklých aplikací.

knihovna (rsconnect) rsconnect :: deployApp ('cesta / k / vaší / aplikaci')

Po nastavení jste připraveni nasadit své lesklé aplikace.

Nyní, když jste se naučili, jak vytvářet a spouštět lesklé aplikace, nasaďte aplikaci, kterou jsme právě vytvořili, do Shinyapps.io, jak je vysvětleno výše, nebo klikněte na publikovat, který se nachází v pravém horním rohu okna aplikace Shiny.

Doufámže tento výukový program R Shiny vám pomohl naučit se, jak vytvořit a spustit aplikaci Shiny. Bavte se vytvářením interaktivních a krásných webových aplikací pomocí R Shiny.

Pokud se chcete naučit programování R a vybudovat si barevnou kariéru v oblasti Data Analytics, podívejte se na naši který přichází s živým tréninkem vedeným instruktorem a zkušenostmi z reálného projektu. Toto školení vám pomůže porozumět analytice dat a pomůže vám dosáhnout zvládnutí předmětu.