R läikiv õpetus: kõik, mida peate teadma

See R Shiny õpetus annab teile üksikasjalikud ja põhjalikud teadmised R Shiny'ist ja interaktiivsete veebirakenduste loomisest.

Tehnoloogia arenguga on loodud reaalajas statistikat, kaarte ja graafikuid kuvavate veebirakenduste loomiseks uuemad tööriistad ja raamistikud. Kuna need funktsioonid vajavad kõrget töötlemist ja sünkroonimist, kasutatakse serveri laadimisaja vähendamiseks programmeerimiskeeli. Selles R Shiny õpetuses selgitan, kuidas R-d dünaamilistes veebirakendustes kõige paremini kasutada.



Käsitleme ja mõistame järgmisi teemasid:



Mis on R läikiv?

Shiny on R-pakett, mis võimaldab kasutajatel luua interaktiivseid veebirakendusi. See tööriist loob Shiny koodist HTML-iga samaväärse veebirakenduse. Rakenduse esitletavaks muutmiseks integreerime natiivse HTML- ja CSS-koodi R Shiny funktsioonidega. Shiny ühendab R-i arvutusliku jõu kaasaegse veebi interaktiivsusega.Shiny loob veebirakendused, mis on veebis teie serveri või R Shiny'i hostimisteenuste abil juurutatud.

R Shiny omadused:

  • Looge lihtsaid rakendusi veebitööriistade põhiteadmistega või teadmisteta
  • Integreerige Shiny natiivsete veebitööriistadega, et parandada paindlikkust ja tootlikkust
  • Eelnevalt sisestatud I / O ja renderdamise funktsioonid
  • Rakenduse sisu lihtne renderdamine ilma mitmekordse laadimiseta
  • Funktsioon arvutatud (või töödeldud) väljundite lisamiseks R-skriptidest
  • Lisage reaalajas aruandeid ja visualiseeringuid.

See viib meid küsimuse juurde:



Mille poolest erineb Shiny traditsioonilistest rakendustest?

Võtame näite ilmarakendusest. Kui kasutaja värskendab / laadib lehte või muudab mis tahes sisendit, peaks see JS-i abil värskendama tervet lehte või selle osa. See lisab serveripoolele töötlemiseks koormust. Läikiv võimaldab kasutajal isoleerida või renderdada (või uuesti laadida) elemente rakenduses, mis vähendab serveri koormust. Lehtede sirvimine oli traditsioonilistes veebirakendustes lihtne, kuid Shiny-rakenduste puhul keeruline. Koodi mõistmisel ja silumisel mängib põhirolli koodi ülesehitus. See funktsioon on läikivate rakenduste jaoks ülioluline teiste rakenduste suhtes.

Liigume R Shiny õpetuse järgmise teema juurde, installides paketi R Shiny.

R Shiny installimine

Shiny installimine on nagu mis tahes muu paketi installimine R-i. Ava R konsool ja käivitage Shiny paketi installimiseks järgmine käsk.



install.packages ('läikiv')

Installige R Shiny - R shiny juhendaja - Edureka

Kui olete installinud, laadige Shiny-pakett Shiny-rakenduste loomiseks.

raamatukogu (läikiv)

Enne kui selles R läikivas õpetuses edasi liikuda, vaatame ja mõistame läikiva rakenduse struktuuri.

Läikiva rakenduse struktuur

Shiny koosneb kolmest komponendist:

  1. Kasutajaliides
  2. Server
  3. ShinyApp

üks.Kasutajaliidese funktsioon

Kasutajaliides Funktsioon (UI) määratleb rakenduse paigutuse ja välimuse. Rakenduse esinduslikumaks muutmiseks saate rakenduses lisada CSS- ja HTML-silte. Funktsioon sisaldab kõiki rakenduses kuvatavaid sisendeid ja väljundeid. Iga element (jaotis või vaheleht või menüü) rakenduses on määratletud funktsioonide abil. Neile pääseb juurde kordumatu ID abil, näiteks HTML-elementidega.Õpime lisateavet mitmesuguste kohtarakenduses kasutatavad funktsioonid.

Läikiva paigutuse funktsioonid

  • headerPanel ()lisage rakendusele pealkiri. titlePaneel () määratleb rakenduse alamrubriigi. Selle paremaks mõistmiseks vaadake allolevat pilti päisPaneel ja titlePaneel .
  • Külgriba paigutus ()määratleb paigutuse, mida hoida külgribaPaneel ja mainPanel elemendid. Paigutus jagab rakenduse ekraani külgriba paneeliks ja põhipaneeliks. Näiteks alloleval pildil on punane ristkülik mainPanel ala ja musta ristküliku ala vertikaalselt on külgribaPaneel piirkonnas.

  • wellPanel ()määratleb konteineri, mis sisaldab mitut objekti rakenduse sisend- / väljundobjekti samas ruudustikus.
  • tabsetPanel ()loob vahelehtede hoidmiseks konteineri. tabPanel () lisab vahekaardi rakendusse, määrates vahekaardi elemendid ja komponendid. Alloleval pildil mustristkülik on tabsetPaneel objekt ja punane ristkülik on tabPaneel objekt.
  • navlistPaneel ()pakub külgmenüüd linkidega erinevatele vahelehtede paneelidele tabsetPanel () nagu vertikaalne loend ekraani vasakul küljel. Alloleval pildil on must ristkülik navlistPaneel objekt ja punane ristkülik on tabPaneel objekt.

Koos läikivate paigutusfunktsioonidega saate rakenduse igale sisendvidinale lisada ka CSS-i.Rakendus Shiny sisaldab veebitehnoloogia funktsioone ning läikivaid R funktsioone ja funktsioone rakenduse rikastamiseks. Kasutage rakenduses Shiny HTML-silte sildid $.

Teie paigutus on valmis. On aeg lisada rakendusse vidinad. Shiny pakub kasutajate suhtlemiseks erinevaid kasutaja sisend- ja väljundelemente. Arutagem mõningate sisend- ja väljundfunktsioonide üle.

Läikivad sisendfunktsioonid

Igal sisendvidinal on silt, Id, muud parameetrid, nagu valik, väärtus, valitud, min, max jne.

  • selectInput ()- luua rippmenüü HTML-element.
selectInput ('vali', h3 ('vali kast'), valikud = loend ('1. valik' = 1, '2. valik' = 2, 'valik 3' = 3), valitud = 1)

  • numericInput ()- sisestusala numbri või teksti sisestamiseks.
dateInput ('num', 'Date input', value = '2014-01-01') numericInput ('num', 'Numeric input', value = 1) textInput ('num', 'Numeric input', value = ' Sisestage tekst ... ')

  • raadionupud ()- luua kasutaja sisestamiseks raadionupud.
raadionupud ('raadio', h3 ('raadionupud'), valikud = loend ('Valik 1' = 1, 'Valik 2' = 2, 'Valik 3' = 3), valitud = 1)

Läikivad väljundfunktsioonid

Shiny pakub mitmesuguseid kuvatavaid väljundfunktsioone R väljundid nagu joonised, pildid, tabelid jne, mis kuvavad vastavaid R objekt.

  • plotOutput ()- kuvada R-maatüki objekt.
plotOutput'top_batsman ')
  • tableOutput ()- kuvab väljundi tabelina.
tableOutput'player_table ')

2. Serveri funktsioon

Server funktsioon dmäärab rakenduse Shiny serveripoolse loogika. See hõlmab selliste funktsioonide ja väljundite loomist, mis kasutavad sisendeid mitmesuguste väljundite saamiseks. Iga klient (veebibrauser) kutsub rakenduse Shiny esmakordsel laadimisel serverifunktsiooni. Iga väljund salvestab renderdamisfunktsioonide tagastusväärtuse.

Need funktsioonid hõivavad R-avaldise ning teevad avaldisele arvutused ja eeltöötluse. Kasutage renderdamise * funktsiooni, mis vastab teie määratletavale väljundile. Juurdepääs sisend vidinatelekasutades sisesta $ [vidina-id] . Need sisendmuutujad on reaktiivväärtused. Kõik sisemuutujate abil loodud vahe-muutujad tuleb muuta reaktiivseteks reaktiivne ({}) . Muutujaile pääsete juurde, kasutades ().

renderdama * funktsioonid teostavad arvutamist serveri funktsiooni sees ja salvestavad väljundmuutujatesse. Väljund tuleb salvestada väljund $ [väljundmuutuja nimi] . Iga renderdama * funktsioon võtab ühe argumendi, st R-avaldise, mis on ümbritsetud traksidega, {}.

3. Funktsioon ShinyApp

shinyApp ()funktsioon onhelistav rakendus Sibul ja server funktsioone, et luua läikiv rakendus.

Alloleval pildil on rakenduse Shiny ülevaade.

Esimese R Shiny rakenduse loomiseks liigume R Shiny õpetuse järgmise segmendi juurde.

Looge Shiny veebiprojekt

Minema Fail ja Loo a Uus projekt suvalises kataloogis -> Läikiv veebirakendus -> [Läikiva rakenduse kataloogi nimi]. Sisestage kataloogi nimi ja klõpsake nuppu Okei .

Iga uus läikiva rakenduse projekt sisaldab histogrammi näidet, et mõista läikiva rakenduse põhitõdesid. Histogrammirakendus sisaldab liugurit, millele järgneb histogramm, mis värskendab väljundit liuguri muutmiseks. Allpool on histogrammi rakenduse väljund.

Rakenduse Shiny käivitamiseks klõpsake nuppu Käivitage rakendus nupp allikapaani paremas ülanurgas. Rakendus Shiny kuvab liuguri vidina, mis võtab sisendiks prügikastide arvu ja renderdab histogrammi vastavalt sisendile.

Nüüd, kui mõistsite rakenduse Shiny ülesehitust ja käitamist. Edasi loome oma esimese läikiva rakenduse.

Looge esimene rakendus Shiny

Võite kas luua uue projekti või jätkata samas töökataloogis. Selles R Shiny õpetuses loome IPL statistika kuvamiseks lihtsa Shiny rakenduse. Rakenduses kasutatud andmekogumi saab alla laadida siin . Andmekogum koosneb kahest failist, tarned.csv sisaldab punktitoimetusi iga palli (üle) lööja, palluri, jooksu detailide ja match.csv fail sisaldab mängu üksikasju, nagu mängu asukoht, viskamine, toimumiskoha ja mängu üksikasjad. Allolev rakendus nõuab põhiteadmisi dplyr ja allpool toodud õpetuse mõistmiseks.

Esimese läikiva rakenduse loomiseks toimige järgmiselt.

erinevus nuku ja koka vahel

Samm 1 : Looge rakenduse Shiny ülevaade.

Kustutage olemasolev kood, välja arvatud funktsiooni definitsioonid rakendus . R faili.

2. samm : Laadige teeke ja andmeid.

Selles etapis laadime vajalikud paketid ja andmed. Seejärel puhastage ja teisendage eraldatud andmed vajalikus vormingus. Lisage allpool olev kood enne Sibul ja server funktsioon.

Kood:

teek (läikiv) teek (tidiverse) # Andmekogumi laadimine --------------------------------------- ---------------- tarned = read.csv ('C: UsersCherukuri_SindhuDownloadsdeliveries.csv', stringsAsFactors = FALSE) vasted = read.csv ('C: UsersCherukuri_SindhuDownloadsmatches.csv', stringsAsFactors = VALE) # Andmete kogumi puhastamine --------------------------------------------- --------- nimed (vasted) [1] = 'match_id' IPL = dplyr :: inner_join (vasted, tarned)

Selgitus :

Esimesed 2 rida laaditakse korrastatud ja Läikiv pakend. Järgmised 2 rida laadivad andmekogumid tarned ja vasted ning salvestavad muutujatessetarnedjatikud. Viimased 2 rida värskendavad veeru nimetikudandmekogum sisemise ühendamise teostamisekstarnedtabel. Liitumiskoha tulemuse salvestameIPLmuutuv.

3. samm : Looge rakenduse Shiny paigutus .

Nagu eelnevalt arutatud, Sibul funktsioon määrab rakenduse välimuse, vidinad ja objektid rakenduses Shiny.Arutleme sama üksikasjalikult.

Kood

sibul<- 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 Sibul funktsioon sisaldab a headerPanel () või titlePaneel () ja sellele järgneb tabsetPaneel rakenduses mitme vahelehe määramiseks. tabPanel () määratleb vastavalt iga vahelehe objektid. Iga tabPanel () koosneb tiitlist ja mainPanel (). mainPanel () loob konteineri laiusega 12, st täisaken, ja joondage sisend- ja väljundobjektid keskele.

Selgitus

Rakendus koosneb kahest vahelehest: Hooaeg ja Meeskonna võidud ja punktid.

Hooaeg sakk koosneb valige Sisend ( ) , esitamise nupp ja tabel. season_year kasutatakse l-st sisendi lugemisekson väärtustest. tableOutput () kuvab serveri funktsioonil arvutatud tabeli väljundi.Tabeli mängijatabel kuvatakse allpool nuppu, mis on määratletud serveri funktsioonis, mida arutatakse järgmises etapis. Meeskonna võidud ja punktid vahekaardil kuvatakse võistkondlik võit ja punktid vastavatel ribadiagrammidel. plotOutput () kuvab renderdamisest tagastatud väljundid * funktsioone. Kõik väljund-, sisendfunktsioonid on sisemise stiili lisamiseks ümbritsetud div-märgendiga.

Nüüd, kui ui-funktsioon on meile tuttav, jätkame meie R Shiny õpetuse serveri funktsiooni mõistmise ja kasutamisega.

4. samm: lisage serveri funktsioonide avaldused

The server funktsioon hõlmab funktsioonide ja väljundite loomistuts, mis kasutavad kasutaja sisendeid mitmesuguste väljundite loomiseks. Theserveri funktsiooni selgitatakse samm-sammult allpool.

match_year = reaktiivne ({match%>% filter (season == input $ season_year)}) playoff = reaktiivne ({nth (sort (match_year () $ match_id, csökkenev = TRUE), 4)}) match_played = reaktiivne ({match_year ()%>% filter (match_id% group_by (team1)%>% võtab kokku (count = n ())}) t2 = reaktiivne ({match_played ()%>% group_by (team2)%>% võtab kokku (count = n ( ))}) wl = reaktiivne ({match_played ()%>% filter (võitja! = '')%>% group_by (võitja)%>% kokku (no_of_wins = n ())}} wl1 = reaktiivne ({match_played ( )%>% group_by (võitja)%>% kokku (no_of_wins = n ())}) seotud = reaktiivne ({match_played ()%>% filter (võitja == '')%>% select (team1, team2)} ) playertable = reaktiivne ({data.frame (võistkonnad = t1 () $ team1, mängitud = t1 () $ count + t2 () $ count, võidud = wl () $ no_of_wins, punktid = wl () $ no_of_wins * 2) })

Ülaltoodud koodifiltri mängud mängiti enne playoffe igal aastal ja salvestage tulemus muutujaks match_played.mängijatabeltabel sisaldab võistkondlikku matši statistikat, st mängitud, võidetud ja punkte. Muutujadmängud_mängitud,mängijatabel,t1,seotudjne on kõik vahepealsed reaktiivsed väärtused . Nendele muutujatele tuleb juurde pääseda, kasutades (), nagu on näidatud ülaltoodud koodis.mängijatabelkuvatakse funktsiooni renderTable abil. Järgmisena looge mänguvälja salvestamiseks väljundmuutuja.

väljund $ player_table = renderTable ({playertable ()})

Nüüd saate luua tulpdiagramme, et näidata iga meeskonna võitu ja punkte hooajal. Allolevas koodis kuvatakse tulpdiagrammid ggploti abil. renderPlot () tõmbab objekti ggplot ja salvestab tulemuse muutujassewins_bar_plot.Ggploti kood on iseenesestmõistetav, see hõlmab põhilisi graafika- ja kaardistamisfunktsioone legendide, siltide ja joonise redigeerimiseks.

väljund $ wins_bar_plot = renderPlot ({ggplot (wl1 () [2: 9,], aes (võitja, no_of_wins, täitmine = võitja)) + geom_bar (stat = 'identiteet') + theme_classic () + xlab ('meeskonnad') + ylab ('Võitude arv') + teema (telg.tekst.x = element_tekst (värv = 'valge'), legend.position = 'pole', telg.pealkiri = element_tekst (suurus = 14), plot.background = element_rect (color = 'white')) + geom_text (aes (x = võitja, (no_of_wins + 0.6), label = no_of_wins, size = 7))}) väljund $ points_bar_plot = renderPlot ({ggplot (playertable (), aes ( Võistkonnad, punktid, täitmine = võistkonnad)) + geom_bar (stat = 'identiteet', suurus = 3) + theme_classic () + theme (telg.text.x = element_text (color = 'valge'), legend.text = element_text ( suurus = 14), axis.title = element_text (size = 14)) + geom_text (aes (meeskonnad, (punktid + 1), silt = punktid, suurus = 7))})

5. samm: käivitage rakendus Shiny.

Klõpsake käsku Käivita rakendus. Eduka jooksu korral näeb teie läikiv rakendus välja nagu allpool. Mis tahes viga või hoiatusRakendusega seotud kuvab see need R-konsoolis.

Tab1 - hooaeg

Tab2 - meeskonna võidud ja punktid

Vaatame, kuidasüles seadmaShinyapps.io konto oma Shiny rakenduste juurutamiseks.

Seadistage Shinyapps.io konto

Minema Shinyapps.io ja logige sisse oma teabega, andke lehele kordumatu konto nimi ja salvestage see. Pärast edukat salvestamist näete üksikasjalikku protseduuri rakenduste juurutamiseks R-konsoolist. Rstudios oma konto konfigureerimiseks toimige järgmiselt.

Samm 1. Installige rsconnect

install.packages ('rsconnect')

2. samm. Volitage konto

The rühendage pakett peab olema teie kontole volitatud, kasutades märki ja saladust. Selleks kopeerige kogu käsk, nagu on näidatud allpool oma armatuurlaua lehel R konsool. Kui olete käsu R-is edukalt sisestanud, volitan teid nüüd rakendusi oma Shinyapps.io kontole juurutama.

rsconnect :: setAccountInfo (nimi = 'konto nimi', luba = 'luba', saladus = 'saladus')

3. samm. Rakenduse juurutamine

Kasutage läikivate rakenduste juurutamiseks allolevat koodi.

teek (rsconnect) rsconnect :: deployApp ('tee / teie / teie / rakendusse')

Pärast seadistamist olete valmis oma läikivad rakendused juurutama.

Nüüd, kui olete õppinud, kuidas Shiny-rakendusi luua ja käitada, juurutage äsja loodud rakendus Shinyapps.io-sse, nagu eespool selgitatud, või klõpsake nuppu avaldama, mis asub rakenduse Shiny paremas ülanurgas.

ma loodanet see R Shiny õpetus aitas teil õppida rakenduse Shiny loomist ja käitamist. Lõbutsege interaktiivsete ja ilusate veebirakenduste loomisel, kasutades R Shiny'i.

Kui soovite õppida R-programmeerimist ja luua värvika karjääri Data Analyticsis, vaadake meie mis on varustatud juhendajate juhitud elava koolituse ja reaalse elu projektikogemusega. See koolitus aitab teil mõista andmeanalüütikat ja aitab teil selle teema üle meisterlikkust saavutada.