R Shiny Tutorial: Lahat ng Kailangan Mong Malaman

Ang R Shiny Tutorial na ito ay magbibigay sa iyo ng isang detalyado at komprehensibong kaalaman tungkol sa R ​​Shiny at kung paano lumikha ng mga interactive na Web Application.

Sa ebolusyon ng teknolohiya, lumitaw ang mga mas bagong tool at balangkas para sa pagbuo ng mga web-application na nagpapakita ng mga istatistika ng real-time, mapa, at grapiko. Dahil ang mga pagpapaandar na ito ay nangangailangan ng mataas na pagproseso at pagsabay, ginagamit ang mga wika ng programa upang mabawasan ang oras ng pag-load ng server. Sa R Shiny tutorial na ito, ipapaliwanag ko kung paano magagamit ang pinakamahusay na paggamit ng R sa mga dynamic na web application.



Saklaw at mauunawaan namin ang mga sumusunod na paksa:



Ano ang R Shiny?

Ang Shiny ay isang R package na nagpapahintulot sa mga gumagamit na bumuo ng mga interactive na web app. Lumilikha ang tool na ito ng isang katumbas na web app ng HTML mula sa Makintab na code. Isinasama namin ang katutubong HTML at CSS code sa mga R Shiny function upang maging presentable ang application. Pinagsasama ng Shiny ang computational power ng R sa interaktibidad ng modernong web.Lumilikha si Shiny ng mga web app na na-deploy sa web gamit ang iyong server o mga serbisyo sa pagho-host ng R Shiny.

Mga Tampok ng R Shiny:

  • Lumikha ng madaling mga application na may pangunahing o walang kaalaman sa mga tool sa web
  • Isama ang Shiny sa mga katutubong tool sa web upang mapabuti ang kakayahang umangkop at pagiging produktibo
  • Paunang binuo na I / O at mag-render ng mga pagpapaandar
  • Madaling pag-render ng nilalaman ng application nang walang maraming mga pag-reload
  • Tampok upang magdagdag ng naka-compute (o naproseso) na mga output mula sa R ​​script
  • Magdagdag ng mga live na ulat at visualisasyon.

Dadalhin tayo sa tanong na:



Paano naiiba ang Shiny mula sa tradisyunal na mga application?

Hinahayaan tayong kumuha ng isang halimbawa ng isang application ng panahon, sa tuwing nai-refresh / na-load ng gumagamit ang pahina o binago ang anumang input, dapat itong i-update ang buong pahina o bahagi ng pahina gamit ang JS. Nagdaragdag ito ng pagkarga sa panig ng server para sa pagproseso. Pinapayagan ng makintab ang gumagamit na ihiwalay o mag-render (o i-reload) ang mga elemento sa app na binabawasan ang pagkarga ng server. Ang pag-scroll sa mga pahina ay madali sa tradisyunal na mga web application ngunit mahirap sa mga Shiny app. Ang istraktura ng code ang gumaganap ng pangunahing papel sa pag-unawa at pag-debug ng code. Ang tampok na ito ay mahalaga para sa makintab na mga app na patungkol sa iba pang mga application.

Lumipat tayo sa susunod na paksa sa tutorial na R Shiny, i-install ang R Shiny package.

Pag-install ng R Shiny

Ang pag-install ng Shiny ay tulad ng pag-install ng anumang iba pang mga pakete sa R. Pumunta sa R Console at patakbuhin ang utos sa ibaba upang mai-install ang Shiny package.



install.packages ('makintab')

I-install ang R Shiny - R shiny tutorial - Edureka

Kapag na-install mo na, i-load ang Shiny package upang lumikha ng mga Shiny apps.

silid-aklatan (makintab)

Bago kami lumipat ng anumang malayo sa R ​​makintab na tutorial na ito, tingnan at unawain natin ang istraktura ng isang Makintab na application.

Istraktura ng isang Shiny app

Ang shiny ay binubuo ng 3 bahagi:

  1. User Interface
  2. Server
  3. ShinyApp

isaPag-andar ng User Interface

User Interface Tinutukoy ng pagpapaandar ng (UI) ang layout at hitsura ng app. Maaari kang magdagdag ng mga tag ng CSS at HTML sa loob ng app upang gawing mas kanais-nais ang app. Naglalaman ang pagpapaandar ng lahat ng mga input at output upang maipakita sa app. Ang bawat elemento (dibisyon o tab o menu) sa loob ng app ay tinukoy gamit ang mga pag-andar. Na-access ang mga ito gamit ang isang natatanging id, tulad ng mga elemento ng HTML.Alamin pa ang nalalaman tungkol sa iba`t ibangmga pagpapaandar na ginamit sa app.

Makintab na Mga Pag-andar ng Layout

  • headerPanel ()magdagdag ng isang heading sa app. titlePanel () tumutukoy sa subheading ng app. Tingnan ang larawan sa ibaba para sa isang mas mahusay na pag-unawa sa headerPanel at pamagatPanel .
  • SidebarLayout ()tumutukoy sa layout na dapat hawakan sidebarPanel at mainPanel mga elemento. Hinahati ng layout ang screen ng app sa sidebar panel at pangunahing panel. Halimbawa, sa imahe sa ibaba, ang pulang rektanggulo ay ang mainPanel lugar at ang itim na rektanggulo na lugar patayo ay sidebarPanel lugar

  • wellPanel ()tumutukoy sa isang lalagyan na nagtataglay ng maraming mga object ng mga input ng app / output ng mga bagay sa parehong grid.
  • tabsetPanel ()lumilikha ng isang lalagyan upang humawak ng mga tab. tabPanel () nagdadagdag ng tab sa app sa pamamagitan ng pagtukoy ng mga elemento ng tab at mga bahagi. Sa imahe sa ibaba, ang itimrektanggulo ay tabsetPanel bagay at ang pulang rektanggulo ay ang tabPanel bagay
  • navlistPanel ()nagbibigay ng isang menu sa gilid na may mga link sa iba't ibang mga tab panel na katulad sa tabsetPanel () tulad ng isang Vertical list sa kaliwang bahagi ng screen. Sa imahe sa ibaba, ang itim na rektanggulo ay navlistPanel bagay at ang pulang rektanggulo ay ang tabPanel bagay

Kasama ng mga makintab na pag-andar ng layout, maaari ka ring magdagdag ng inline CSS sa bawat input widget sa app.Ang Shiny app ay nagsasama ng mga tampok ng mga teknolohiya sa web kasama ang mga makintab na tampok ng R at pagpapaandar upang pagyamanin ang app. Gumamit ng mga HTML tag sa loob ng Shiny app na ginagamit mga tag na $.

ano ang malaking data hadoop

Handa na ang iyong layout, oras na upang magdagdag ng mga widget sa app. Nagbibigay ang makintab ng iba't ibang mga elemento ng pag-input at output ng gumagamit para sa pakikipag-ugnay ng gumagamit. Talakayin natin ang ilang mga pag-andar ng pag-input at output.

Makintab na Mga Pag-andar ng Input

Ang bawat input widget ay may isang label, Id, iba pang mga parameter tulad ng pagpipilian, halaga, napili, min, max, atbp.

  • selectInput ()- Lumikha ng isang dropdown na elemento ng HTML.
selectInput ('select', h3 ('Select box'), options = list ('Choice 1' = 1, 'Choice 2' = 2, 'Choice 3' = 3), napili = 1)

  • numericInput ()- input area upang mag-type ng isang numero o teksto.
dateInput ('num', 'Petsa ng pag-input', halaga = '2014-01-01') numericInput ('num', 'Numeric input', halaga = 1) textInput ('num', 'Numeric input', halaga = ' Ipasok ang teksto ... ')

  • radio Buttons ()- Lumikha ng mga pindutan ng radyo para sa pag-input ng gumagamit.
radio Buttons ('radio', h3 ('Mga radio button'), mga pagpipilian = listahan ('Choice 1' = 1, 'Choice 2' = 2, 'Choice 3' = 3), napili = 1)

Mga function ng Shiny Output

Nagbibigay ang makintab ng iba't ibang mga pagpapaandar ng output na ipinapakita R mga output tulad ng mga balangkas, imahe, talahanayan, atbp na tumutugma sa pagpapakita R bagay

  • plotOutput ()- ipakita ang R plot object.
plotOutput'top_batsman ')
  • tableOutput ()- Ipinapakita ang output bilang talahanayan.
tableOutput'player_table ')

2. Pag-andar ng Server

Server pagpapaandar defines ang server-side na lohika ng Shiny app. Nagsasangkot ito ng paglikha ng mga pagpapaandar at output na gumagamit ng mga input upang makagawa ng iba't ibang mga uri ng output. Ang bawat kliyente (web browser) ay tumatawag sa pagpapaandar ng server nang una nitong na-load ang Shiny app. Ang bawat output ay nag-iimbak ng halaga ng pagbalik mula sa mga pagpapaandar sa pag-render.

Ang mga pagpapaandar na ito ay nakakakuha ng isang R expression at nagsasagawa ng mga kalkulasyon at paunang pagproseso sa pagpapahayag. Gamitin ang pagpapaandar na render * na tumutugma sa output na iyong tinutukoy. Ina-access namin ang mga input widgetgamit input $ [widget-id] . Ang mga variable ng pag-input na ito ay mga reaktibong halaga. Anumang mga pansamantalang variable na nilikha gamit ang mga variable ng pag-input ay kailangang gawing reaktibo gamit reaktibo ({}) . I-access ang mga variable gamit ang ().

magbigay * Ang mga pagpapaandar ay nagsasagawa ng pagkalkula sa loob ng pag-andar ng server at nag-iimbak sa mga variable ng output. Ang output ay kailangang i-save output $ [pangalan ng variable ng output] . Bawat isa magbigay * Ang pag-andar ay tumatagal ng isang solong argumento ibig sabihin, isang ekspresyong R na napapaligiran ng mga brace, {}.

3. ShinyApp Function

shinyApp ()ang pagpapaandar ay ang puso ngang app na tumatawag SIBUYAS at server mga function upang lumikha ng isang Shiny App.

Ipinapakita ng imahe sa ibaba ang balangkas ng Makintab na app.

Lumipat tayo sa susunod na segment sa tutorial na R Shiny upang likhain ang unang R Shiny App.

Lumikha ng isang makintab na proyekto sa web

Pumunta sa File at Lumikha a Bagong proyekto sa anumang direktoryo -> Makintab na Application ng Web -> [Pangalan ng Makintab na Direktoryo ng application]. Ipasok ang pangalan ng direktoryo at i-click OK lang .

Ang bawat bagong proyekto ng Shiny app ay maglalaman ng isang halimbawa ng histogram upang maunawaan ang mga pangunahing kaalaman sa isang makintab na app. Naglalaman ang histogram app ng isang slider na sinusundan ng isang histogram na nag-a-update ng output para sa isang pagbabago sa slider. Nasa ibaba ang output ng histogram app.

Upang patakbuhin ang Shiny app, mag-click sa Patakbuhin ang App pindutan sa kanang sulok sa itaas ng source pane. Nagpapakita ang Shiny app ng isang slider widget na kumukuha ng bilang ng mga bins bilang input at nai-render ang histogram ayon sa input.

Ngayon na naintindihan mo ang istraktura at kung paano magpatakbo ng isang Shiny app. Tumuloy tayo upang lumikha ng aming unang Shiny App.

Lumikha ng unang Shiny app

Maaari kang lumikha ng isang bagong proyekto o magpatuloy sa parehong gumaganang direktoryo. Sa R Shiny tutorial na ito, lilikha kami ng isang simpleng Shiny app upang maipakita ang IPL Statistics. Maaaring ma-download ang dataset na ginamit sa app dito . Ang dataset ay naglalaman ng 2 mga file, paghahatid.csv naglalaman ng mga paghahatid ng puntos para sa bawat bola (sa higit) batsman, bowler, nagpapatakbo ng mga detalye at tugma.csv Naglalaman ang file ng mga detalye ng pagtutugma tulad ng lokasyon ng pagtutugma, paghuhugas, mga detalye ng venue at laro. Ang app sa ibaba ay nangangailangan ng pangunahing kaalaman ng dplyr at upang maunawaan ang tutorial sa ibaba.

Sundin ang mga hakbang sa ibaba upang likhain ang iyong unang makintab na app.

Hakbang 1 : Lumikha ng balangkas ng isang Shiny app.

I-clear ang umiiral na code maliban sa mga kahulugan ng pagpapaandar sa app . R file

Hakbang 2 : Mag-load ng mga aklatan at data.

Sa hakbang na ito, na-load namin ang kinakailangang mga pakete at data. Pagkatapos, linisin at ibahin ang nakuha na data sa kinakailangang format. Idagdag ang code sa ibaba dati SIBUYAS at server pagpapaandar

Code:

silid-aklatan (makintab) silid-aklatan (malinis) # Naglo-load ang Dataset ---------------- deliveries = read.csv ('C: UsersCherukuri_SindhuDownloadsdeliveries.csv', stringsAsFactors = FALSE) tugma = read.csv ('C: UsersCherukuri_SindhuDownloadsmatches.csv', stringsAsFactors = MALI) # Paglilinis ng Dataset -------------------------------------------- --------- names (match) [1] = 'match_id' IPL = dplyr :: inner_join (mga tugma, paghahatid)

Paliwanag :

Ang unang 2 linya ay naglo-load malinis at Makintab pakete Ang susunod na 2 linya ay naglo-load ng mga paghahatid ng dataset at mga tugma at nag-iimbak sa mga variablepaghahatidattugma. Ang huling 2 linya ay ina-update ang pangalan ng haligi ngtugmaang dataset upang magsagawa ng panloob na pagsali sapaghahatidmesa Inimbak namin ang resulta ng pagsali saIPLvariable

Hakbang 3 : Lumikha ng layout ng Shiny app .

Tulad ng tinalakay kanina, ang SIBUYAS tinutukoy ng pagpapaandar ang hitsura, mga widget, at object ng app sa Shiny app.Talakayin natin ang pareho nang detalyado.

Code

sibuyas<- 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')) ) )))

Ang SIBUYAS naglalaman ang pagpapaandar a headerPanel () o titlePanel () at sinundan ng tabsetPanel upang tukuyin ang maraming mga tab sa app. tabPanel () tumutukoy sa mga bagay para sa bawat tab, ayon sa pagkakabanggit. Bawat isa tabPanel () binubuo ng pamagat at mainPanel (). mainPanel () lumilikha ng isang lalagyan ng lapad 12 ie buong window at ihanay ang mga input at output na bagay sa gitna.

Paliwanag

Ang app ay binubuo ng 2 mga tab: Panahon at Panalo at Mga Punto ng Koponan.

Panahon ang tab ay binubuo ng selectInput ( ) , isumite ang pindutan at isang talahanayan. ginagamit ang season_year upang basahin ang input mula sa lay ng mga halaga. tableOutput () ipinapakita ang output ng talahanayan na kinakalkula sa pagpapaandar ng server.Ang talahanayan player_table ay ipinapakita sa ibaba ng pindutan na tinukoy sa pagpapaandar ng server na tatalakayin sa susunod na hakbang. Panalo at Mga Punto ng Koponan ipinapakita ng tab ang panalo ng matalinong pangkat at mga puntos sa kani-kanilang mga chart ng bar. plotOutput () ipinapakita ang mga output na ibinalik mula sa render * pagpapaandar Ang lahat ng mga output, input function ay nakapaloob sa loob ng isang div tag upang magdagdag ng inline na estilo.

Ngayong pamilyar tayo sa ui function, magpatuloy tayo sa pag-unawa at paggamit ng pag-andar ng server sa aming R Shiny tutorial.

Hakbang 4: Idagdag ang mga pahayag ng pagpapaandar ng server

Ang server Ang pag-andar ay nagsasangkot sa paglikha ng mga pag-andar at outputs na gumagamit ng mga input ng gumagamit upang makabuo ng iba't ibang mga uri ng output. AngAng pagpapaandar ng server ay ipinaliwanag nang sunud-sunod sa ibaba.

match_year = reactive ({match%>% filter (season == input $ season_year)}) playoff = reactive ({nth (sort (match_year () $ match_id, bumababa = TRUE), 4)}) match_played = reactive ({match_year ()%>% filter (match_id% group_by (team1)%>% buod (count = n ())}) t2 = reaktibo ({match_played ()%>% group_by (team2)%>% buod (count = n ( ))}) wl = reactive ({match_played ()%>% filter (nagwagi! = ')%>% group_by (nagwagi)%>% buod (no_of_wins = n ())}) wl1 = reactive ({match_played ( )%>% group_by (nagwagi)%>% buod (no_of_wins = n ())}) nakatali = reaktibo ({match_played ()%>% filter (nagwagi == ')%>% select (team1, team2)} ) playertable = reactive ({data.frame (Teams = t1 () $ team1, Pinatugtog = t1 () $ count + t2 () $ count, Wins = wl () $ no_of_wins, Points = wl () $ no_of_wins * 2) })

Ang mga tumutugma sa filter ng code sa itaas na nilalaro bago ang mga playoff bawat taon, at iimbak ang resulta sa variable na match_played.player_tableNaglalaman ang talahanayan ng mga istatistika ng pagtutugma na matalino sa koponan ie nilalaro, nanalo, at mga puntos. Mga variablepinaglaruan,player_table,t1,nakatali, atbp lahat ay nasa gitna reaktibong halaga . Ang mga variable na ito ay kailangang ma-access gamit ang () tulad ng ipinakita sa code sa itaas.player_tableay ipinapakita gamit ang pag-andar ng renderTable. Susunod, likhain ang variable ng output upang mag-imbak ng playertable.

output $ player_table = renderTable ({playertable ()})

Hinahayaan ngayon ang lumikha ng mga tsart ng bar upang ipakita ang mga panalo at puntos na nakapuntos ng bawat koponan sa panahon. Ipinapakita ng code sa ibaba ang mga tsart ng bar gamit ang ggplot. renderPlot () Kinukuha ang ggplot object at iniimbak ang resulta sa variablewins_bar_plotAng ggplot code ay nagpapaliwanag sa sarili, nagsasangkot ito ng mga pangunahing pag-andar ng graphics at pagmamapa upang mai-edit ang alamat, mga label at balangkas.

output $ wins_bar_plot = renderPlot ({ggplot (wl1 () [2: 9,], aes (nagwagi, no_of_wins, fill = nagwagi)) + geom_bar (stat = 'pagkakakilanlan') + tema_classic () + xlab ('Mga Koponan') + ylab ('Number Of Wins') + tema (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 = nagwagi, (no_of_wins + 0.6), label = no_of_wins, size = 7))}) output $ points_bar_plot = renderPlot ({ggplot (playertable (), aes ( Mga Koponan, Punto, punan = Mga Koponan)) + geom_bar (stat = 'pagkakakilanlan', laki = 3) + tema_classic () + tema (axis.text.x = element_text (kulay = 'puti'), legend.text = element_text ( laki = 14), axis.title = element_text (laki = 14)) + geom_text (aes (Mga Koponan, (Mga Points + 1), label = Mga Punto, laki = 7))})

Hakbang 5: Patakbuhin ang Shiny app.

Mag-click sa Run App. Sa isang matagumpay na pagtakbo, ang iyong Shiny app ay magiging hitsura sa ibaba. Anumang error o babalana nauugnay sa app, ipapakita nito ang mga ito sa R ​​Console.

Tab1 - Season

Tab2 - Panalo at Mga Punto ng Koponan

Tingnan natin kung paanoupang mag-set upShinyapps.io account upang mai-deploy ang iyong mga Shiny app.

I-set up ang Shinyapps.io Account

Pumunta sa Shinyapps.io at mag-sign in gamit ang iyong impormasyon, pagkatapos ay magbigay ng isang natatanging pangalan ng account para sa pahina at i-save ito. Pagkatapos ng matagumpay na pag-save, makakakita ka ng isang detalyadong pamamaraan upang mag-deploy ng mga app mula sa R ​​Console. Sundin ang pamamaraan sa ibaba upang mai-configure ang iyong account sa Rstudio.

Hakbang 1. I-install ang rsconnect

install.packages ('rsconnect')

Hakbang 2. Pahintulutan ang Account

Ang kumonekta ang package ay dapat na pahintulutan sa iyong account gamit ang isang token at lihim. Upang magawa ito, kopyahin ang buong utos tulad ng ipinakita sa ibaba sa iyong pahina ng dashboard sa R console Sa sandaling matagumpay mong naipasok ang utos sa R, pinapahintulutan kita ngayon na mag-deploy ng mga application sa iyong Shinyapps.io account.

rsconnect :: setAccountInfo (pangalan = 'pangalan ng account', token = 'token', lihim = 'lihim')

Hakbang 3. I-deploy ang App

Gamitin ang code sa ibaba upang mag-deploy ng mga Shiny app.

library (rsconnect) rsconnect :: deployApp ('path / to / your / app')

Kapag itinakda, handa ka nang i-deploy ang iyong mga makintab na apps.

Ngayon na natutunan mo kung paano lumikha at magpatakbo ng mga makintab na apps, i-deploy ang app na nilikha namin sa Shinyapps.io tulad ng ipinaliwanag sa itaas o mag-click sa ilathala, na naroroon sa kanang tuktok na sulok ng window ng Shiny app.

sanana ang R Shiny tutorial na ito ay nakatulong sa iyo na malaman kung paano lumikha at magpatakbo ng isang Shiny app. Magsaya sa paglikha ng interactive at magagandang mga web app gamit ang R Shiny.

Kung nais mong malaman ang R Programming at bumuo ng isang makulay na karera sa Data Analytics, pagkatapos ay tingnan ang aming na kasama ng live na pagsasanay na pinamunuan ng magtuturo at karanasan sa proyekto sa totoong buhay. Tutulungan ka ng pagsasanay na ito na maunawaan ang data analytics at makakatulong sa iyo na makamit ang mastery sa paksa.