You are on page 1of 14
20109122, 1843, Shiny - Use scripts dados do R Brilhante (/) spartiede (hitpsviwarstudiosom/) Iniciar Ytutorial”) —Geleria(/gallery/) Artigas Varticles/) _Histérias de aplicativos /app-stories/) Licko 5 Usar scripts e dados doR Esta lice mostrard como carregar dados, scripts R e pacotes para usar em seus aplicativos Shiny. Ao longo do caminho, vocé construird um aplicativo sofisticado que visualiza os dados do Censo dos EUA. consusVis cconsusVis if condados.rds counties. rds é um conjunto de dados demograficos para cada municipio nos Estados Unidos, coletados como uScensus2610 pacote R. Vocé pode baixé-lo aqui (census-app/data/counties.rds) Depois de ter o arquivo, ‘+ Crieumanova pastanomeada data emseu census-app diretério. + Mova counties.rds para data pasta Quando terminar, sua census-app pasta deve ficar assim. hitpsshinystudo.com/tutoriawriten-tutoriaVlessons! ane 2oinar22, 1843 Shiny - Use scripts e dados do R. Bralhante (¢/) PPE oop » aoe psifwerucstutiocom/) Iniciar Vtutorial) Galeria (/gallery/) Artigas Varticles/) —_Histérias de aplicativos (/app-stories/) O conjunto de dados em counties. rds contém ‘+ onome de cada condado nos Estados Unidos ‘+ apopulagio total do concelho ‘+ aporcentagem de residentes no condado que do brancos, negros, hispSnicos ou asisticos counties <- readRDS(""census-app/data/counties..rds") head(counties) rane total.pop white black hispanic asian 2 atabona,outauga — S4871-77.219.30 2488 2 atabanabeldwin 182265 63.5 16.9 4 OT 3 olobana,borbour 27457 46.8 47.8 5.2 4 alabana,bibh 22913 75.0 22.918 0.1 5 slabonajblount 57322 86.9 2.5.8.1 6.2 6 atabona,butlock 16914 21.8 71.8 7 8.2 ajudantes.R helpers.R éum script R que pode ajudé-lo a fazer mapas coropléticos (httpy/en. cores para exibir a variagao regional de uma varivel. No nosso caso, helpers. criaremos percent_map ,uma ipedia.org/wiki/Choropleth_map) , como os mostrados acima. Um mapa coroplético é um mapa que usa funcdo projetada para mapear os dados em counties.rds .Vocé pode baixar helpers. aqui (census- app/helpers.R). helpers.R usa os pacotes maps € mapproj no R. Se vocé nunca instalou esses pacotes antes, precisard fazer isso antes de criar este aplicativo. Corre ‘install. packages (c("maps", "mapproj")) Salve helpers.R dentro do seu census-app diretério, como abaixo. hitpsshiny studo.com/utoriabwriten-ttoriallessonS! ane 2oinar22, 1843 Shiny - Use scripts e dados do R. Brithantemt/) a. 0 Galeria /gallery) Artigas Varticles/) —_Histérias de aplicativos /app-stories/) A percent_map funcdoem helpers. R recebe cinco argumentos: Argumento — Entrada var um vetor de coluna do conjuntode counties.rds dados color qualquer cadeia de caracteres que vocé vé na saida de colors () Legend. title Uma cadeia de caracteres para usar como titulo da legenda do enredo max Um parametro para controlar a faixa de tonalidade (o padrao 6 100) min Um parametro para controlar a faixa de tonalidade (o padrao é 0) Vocé pode usar percent_map nalinha de comando para plotar os dados dos condados como um mapa coroplético, como este. Library (maps) Library (mapproj) source ("census-app/helpers-R") counties <- readR0S(""census-app/data/counties.rés") percent_map(countiesguhite, “darkgreen”, "i White") Noto: 0 cédigo acima assume que census-app éum subdiretério em seu diretério de trabalho. Certifique-se de definir seu diretério de trabalho como o diretério pai para census~app . Para alterar o local do diretério de trabalho, clique em Sessdo > Definir diretério de trabalho > Escolher diretorio..na barra de menu do RStudio, percent_map plota os dados dos condados como um mapa coroplético. Aqui serd plotado o percentual de residentes brancos nos municfpios na cor verde escuro, hitpsshiny studo.com/utoriabwriten-ttoriallessonS! site R 20109122, 1843, Shiny - Use scripts dados do R Brilhante (/) spartiede (hetpsstmnstudiocom/) torial”) —Galeria(/gallery/) —_Artigos Varticles/) Historias de aplicativos /app-stories/) o a . . . 00% Carregando arquivos e caminhos de arquivo Dé uma olhada no cédigo acima, Para usar percent_map , primeiro rodamos helpers.R coma source funcaoe depois carregamos counties.rds coma readRDS fungao.Nés também corremos Library (maps) e VUibrary (mapproj) Vocé precisara pedir a0 Shiny para chamar as mesmas funcdes antes de usé-las percent_map em seu aplicativo, mas a forma como vocé escreve essas fungées mudard, Ambos source € readR0S exigem um caminho de arquivo, ¢ 0s, caminhos de arquivo nao se comportam da mesma maneira em um aplicativo Shiny como na linha de comand. Quando o Shiny executa os comandos em server. , ele trata todos os caminhos de arquivo como se eles, comecassem no mesmo diretério queo server .R . Em outras palavras,o diretério em que vocé salvar server. R se tornara o diretério de trabalho do seu aplicativo Shiny. Como vocé salvou helpers.R nomesmodiretérioque server .R , vocé pode pedir 20 Shiny para carregé-lo com source (*helpers.R") Comovocé salvou counties.rds emum subdiretério (dados nomeados) do diretério server .R emque esté, vocé lo. pode carregi counties <- readR0S("data/counties.rés") Vocé pode carregar os pacotes maps € mapproj damanciranormalcom hitpsshinystudo.com/tutoriawriten-tutoriaVlessons! ane 20109122, 1843, Brftehanee (/) “Ubeary (nappre: apanieae MrPred) (htpsyswayestusiocom) pila (tutoraln Gudnae requer um caminho de‘arquiv. Execugdo Galeria (gallery) Shiny - Use scripts dados do R Artigos Varticles/) Historias de aplicativos V/app-stories/) Shiny executaré todos esses comandos se vocé os colocar em seu app. script. Noentanto, onde vocé os coloca determinaré quantas vezes eles serao executados (ou reexecutados), o que, por sua ver, afetaré o desempenho do seu aplicativo, pois 0 Shiny executard algumas secdes do seu app. script com mais frequéncia do que outras. O Shiny executaré todo o script na primeira vez que vocé chamar runapp . Isso faz com que Shiny executea server fungao. ui < fluidpagec 2 server <- function(input, output) { # Another place to put code ‘outputsmap <- renderPlotC{ # A third place to put code bd 3 Run once when app is launched Shiny salvaa server fungo até que um novo usuario chegue, Cada vez que um novo usuario visita seu aplicativo, 0 Shiny executaa server funcao novamente, uma vez. A fungao ajuda o Shiny a construir um conjunto distinto de objetos reativos para cada ususrio. hitpsshinystudo.com/tutoriawriten-tutoriaVlessons! one R 20109122, 1843, Shiny - Use scripts dados do R Bri tah eet fy m* cose sporirdai <- Fluidpaget tesdagenrstadiocsn) Iniciar (/tutorial/) Galeria /gallery/) Artigos (/articles/) Histérias de aplicativos (/app-stories/) R Run once each time a user visits the app shinyApp(ui, server) ‘A medida que os usudrios interagem com os widgets e alteram seus valores, o Shiny executaré novamente as, expresses R atribuidas a cada objeto reativo que depende de um widget cujo valor foi alterado. Se o seu usudrio for muito ativo, essas expressdes podem ser executadas novamente muitas e muitas vezes por segundo. # A place to put code ui < fluidpagec > server <- function(input, output) { # Another place to put code Run once each time a user changes a widget that output$map ; dn depends on ‘output Smap <- renderPlot({ shinyApp(ui, server) Aqui est o que aprendemos até agora: + A shrinyApp fungdo € executada uma vez, quando vocé inicia seu aplicative «A server fungao 6 executada uma vez cada vez que um usuério visita seu aplicativo + As expressées R dentro das renders fungées so executadas muitas vezes. Shiny os executa uma vez cada vez ‘que um usuario altera o valor de um widget. Como vocé pode usar essa informagao? hitpsshinystudo.com/tutoriawriten-tutoriaVlessons! ane 2oinar22, 1843 Shiny - Use scripts e dados do R. Ser PEAS erigam Bpiotecas de carregamento.e conjuntos de dados de eiturano iniciode apo.R forada server funcdo. O Shiny executard esse cédigo apenas uma vez, 0 que é tudo o que vocé precisa para configurar seu servidor ara executar as expresses R contidasno server Crpsciwenwrstusiocom) Iniciar Vtutoriay) ~Galeria/gallery/) Artigas Varticles/) Historias de aplicativs Vapp-stories/) Defina objetos especificos do usuario dentro server da fungo, mas fora de qualquer renders chamada. Esses seriam objetos dos quais vocé acha que cada ususrio precisard de sua prépria cépia pessoal. Por exemplo, um objeto que registra as informacGes da sesso (articles/client-datahtml) do usuario . Este cédigo serd executado uma vez por Coloque apenas 0 cédigo que Shiny deve executar novamente para construir um objeto dentro de uma render funcao. O Shiny executaré novamente todo 0 cédigo em um render bloco cada vez que um usuario alterar um widget ‘mencionado no bloco. Isso pode ser bastante frequente, Em geral, vocé deve evitar colocar cédigo dentro de uma render fungao que nao precisa estar Id, Fazé-1o vai deixar todo o aplicativo mais lento, Sua vez 1 Copiee cole o seguinte app.2 arquivoemseu census-app diretério, Em seguida, adicione source (*helpers.R") counties < readR0S("data/counties.rés") Vibrary(maps) Library (mapproj) 0 seu app. roteiro. Certifique-se de colocar os comandos em um local eficiente. Observacdo: esta é a primeira de duas etapas que concluirdo seu aplicativo. Escolha o melhor local para inserir o cédigo acima, ‘mas ndo tente executar 0 aplicativo. Seu aplicativo retornard um erro até que vocé substitua # some arguments por um cédigo real em Sua Ver 2. uiLR hitpsshiny studo.com/utoriabwriten-ttoriallessonS! ma R 2oinar22, 1843 Shiny - Use scripts e dados do R. Br ¥#chantee’=¢) “ui & MuidPage( oP elePanel(Mcensusvis") » ¥) Iniciar Ytutorial) Galeria (gallery) Artigos Vartiles/) sidedarLayout( sidebarPanel( helpText("create demographic maps with information from the 2010 US Census."), selectInput("var", label = "Choose a variable to display", choices = ¢("Percent white", "Percent Black", "Percent Hispanic", "Percent Asian"), Percent hi selected = sUiderInput "range", Label = "Range of interests", min = ©, max = 160, value = ¢(2, 106) nainPaneL(plotoutput("nap")) # Server logic ~ server <= function(input, output) ( output$nap <- renderPLot ({ percent_map( # some arguments ) » # Run app ~ shinyapp(ut, server) Resposta modelo 1 ‘Como seu apl Histérias de aplicatives V/app-stories/) tivo precisa ser carregado apenas uma helpers.R vez counties. rds ,eles devem sair das fungbes ui e server .Este também é um bom lugar para carregar a maps biblioteca (que percent_map usa). hitpsshiny studo.com/utoriabwriten-ttoriallessonS! ae R 2oinar22, 1843 Shiny - Use scripts e dados do R. Brfthanee (/) Library mapprei) *Boucée("helpers.R") (ragexbnweepagaRbs MIST OAREALD. res pleriaVeallery?) Artigas Vartcles) Historias de apicativos Vapp-stories/) # User interface ~ ui & FlwiaPage( titlePanel ("censusvis"), sidebarLayout( sidebarPanel( hetpText("Create demographic maps with information from the 2010 US Census." selectInput("var", label = "Choose a variable to display", choices = ¢("Percent white", "Percent Black", "Percent Hispanic", "Percent Asian"), selected = "Percent Khite"), sUiderInput "range", Label = "Range of interests", min = ©, max = 169, value = ¢(2, 106) nainPanel(plotoutput("map")) # Server logic ~ server <= function(input, output) output$map <- renderPto percent map( # some arguments ) » # Run app ~ shinyApp(ui, server) Vocé pode se perguntar: "Cada usuério nao precisaré de sua prépria cépiade counties © percent_nap ?" (oque implicaria que o cédigo deveria ir paradentroda server fungio). Nao, cada usuario nao. Lembre-se de que 0 computador do seu usudrio no executard nenhum cédigo R em seu aplicativo Shiny. Na verdade, ‘© computador deles nem vera o cédigo R. O computador que vocé usa como servidor executaré todo 0 cédigo R necessério para todos os seus ususirios. Ele enviard os resultados para seus usuarios como elementos HTML. ‘Seu servidor pode contar com uma tinica cépia global coun\ jes.rds e percent_map fazer toda a execucao do R necessaria para todos os usuarios. Vocé s6 precisa construir um objeto separado para cada usuario se os objetos tiverem valores diferentes para cada um de seus usuarios, hitpsshiny studo.com/utoriabwriten-ttoriallessonS! ante R 2oinar22, 1843 Shiny - Use scripts e dados do R. Eimalizandg o aplicativo 5 Stivo de visualizacdo do censo tern um objete reativo, um grifico chamado "nap" .O gréfico é construido com Historias de aplicativos (/app-stories/) pseu vo, icar Viutorial) | Galeria gallery”) Artigos Vartcles/) a'percent_map funcao, que recel e cinco argumentos. ‘+ Osprimeiros trés argumentos, var , color € Legend. title ,dependem do valor do widget de caixa de selegio. + Osdois tiltimos argumentos, max e min ,devem ser os valores maximo e minimo do widget da barra deslizante. A server funcdo abaixo mostra uma maneira de criar arguments reativos para percent_map . A fungio do R switch pode transformar a saida de um widget de caixa de selegio para o que vocé quiser. No entanto, o script esta incompleto. Ele nao fornece valores para color , legend. title, max ou min . Nota: o script ndoserd executado como esta. Vocé precisara terminar o scr server <- functionCinput, output) output $map <- renderPLot( date < switch(input$var, "Percent = countiesguhite, *Pereent = countiessblack, "percent Hispanic" = countiesshispanic, "Percent Asian" = countiesSasian) percent_map(var = data, color = 7, legend.title = 7, max = 7, min Sua vez 2 Conclua 0 cédigo para criar um aplicativo de visualizagao de censo funcional. Quando e: Se tudo funcionar, seu aplicativo deve se parecer com a imagem abaixo. Vocé precisara decidir ‘+ como criar os valores de argumento para percent_map e + onde colocar o cédigo que cria esses argumentos. Lembre-se, vocé desejard que os valores dos arguments mudem sempre que um usudrio alterar o widget associado. Quando terminar, ou se ficar preso, lela abaixo para obter uma resposta modelo. hitpsshiny studo.com/utoriabwriten-ttoriallessonS! 3t antes de executé-lo, que é a tarefa de Your Turn 2. fer pronto para implantar seu aplicativo, salve seu app.R arquivo e execute runapp("'census-app") ton4 2010922, 18.44 Shiny - Use scripts dados do R Brithante (/y »@ensusVis (httpsv/wwnwrstudio.camy/) —Inictar (/tutorial/) Galeria /gallery/) ‘Create demographic maps with information rom the 2010 US Census, Choose a variable to display Percent White ~ ange of interest: 1D okorles Respostas Modelo 2 hitpsshinystudo.com/tutoriawriten-tutoriaVlessons! Artigos Varticles/) Histérias de aplicativos V/app-stories/) wane R 2010922, 18.44 Shiny - Use scripts dados do R Br diaHameteset /)— Library (shiny) ahiteee E165 cwans) Cresvdeyeuabpbagy™? nlclar tutorial) — Galeria gallery?) Artigas Varticles/) # Load data ~ counties <- readR0S("data/counties.rés") # Source helper functions ~ source (*helpers.R") W User interface ~ ui < FlusaPage( titlePanel(mcensusvis"), sidebarLayout( sidebarPanel( helpText("Create demographic maps with information from the 2816 US Census."), selectInput("var", Label = "Choose a variable to display", ("Percent White", "Percent Black", "percent Hispanic, "Percent Asian"), selected = "Percent khite"), choices sUiderinput "range", Label = "Range of interest: min = ©, max = 109, value = (0, 100)) » mainPanel (ptotoutput("map")) W Server logic ~ server <- function(input, output) outputsmap <- renderPLot(( date < switch(inputsvar, “percent White” = counties¢uhite, "percent Black" = countiessblack, “Percent Hispanic" = countiesshispanic, "percent Asian" = counties¢asian) color < switch(inputsvar, "percent White" = "darkgreen", black", vercent Black’ "percent Hispanic" = "darkorange", ‘darkviolet") "ercent Asian’ Legend <- switchCinputsvar, "percent White” =" White”, hitpsshinystudo.com/tutoriawriten-tutoriaVlessons! Histérias de aplicativos V/app-stories/) sane R 2oingr22, 18:44 Shiny - Use scripts e dados do R. "Percent Black" = "% Black", Brilhante (/) apartiede "percent Asian" "percent Hispanic = "% Hispanic’ sian") Iniciar Vtutoria) Galeria (gallery) Artigas Varticles/)__Histérias de aplicativos /app-stories/) Percent_map(date, color, legend, inputSrange[1}, inputSrange[2)) # Run app ~ shinyApp(ui, server) Uma versio m: concisada server funcdo: server <- function(input, output) coutput$map <- renderPlot( ares < switeh(input$var, "Percent white” Vist(countiessuhite, "darkgreen", "% white"), List(countiessblack, "black", "% Black "percent Hispanic" = list (countiesshispanic, "éarkorange", "s Hispanic"), Percent Black "Percent Asian" = List(countiessasian, "darkviolet", "% Asian")) argstmin < SnputSrange( 1) argsimax < inputgrange[2) do-call(percent_map, args) » Recapitular Vocé pode criar aplicativos Shiny mais complicados carregando scripts R, pacotes e conjuntos de dados. Tenha em mente: + Odiretério que app.R aparece se tornard o diretério de trabalho do aplicativo Shiny ‘+ Shiny executard o cédigo colocado no inicio de app. ,antes da server fun¢do, apenas uma vez durante a vida Util do aplicativo. ‘+ OShiny executard o cédigo colocado dentro server da fungao varias vezes, o que pode tornar 0 aplicativo mais lento. Vocé também aprendeu que switch é um companheiro util para widgets Shiny de maltipla escolha. Use switch para alterar os valores de um widget em expressées R. A medida que seus aplicativos se tornam mais complexos, eles podem se tornar ineficientes € lentos. A licao 6 (./lesson6/) mostrar como criar aplicativos modulares e rapidos com expressées reativas. Continuar para algo 6 (./lesson6) hitpsshiny studo.com/utoriabwriten-ttoriallessonS! 134 2oingr22, 18:44 Shiny - Use scripts e dados do R. Brilhante (/) Says’ iverclividassobracestpactianqu uissrsiscytiramideiosangesqniadesadui,nnstana GospanidadaRSudines) —R (https://community.rstudio.com/c/shiny) . Nossos desenvolvedores monitoram esses foruns e respondem a perguntas periodicamente. Consulte a ajuda (/help) para obter mais ajuda com todas as coisas Shiny. ‘© Copyright 2020 RStutio (hetpsywantiokesia ‘pyri 2020 RStudi Ine npr hitpsshiny studo.com/utoriabwriten-ttoriallessonS! vane

You might also like