3 Servidor

A segunda parte do seu aplicativo é o servidor, é nele que ocorre a execução das solicitados feita pelo o usuário e que são encaminhadas a estrutura server por intermédio da estrutura ui. Para mostrar de maneira prática o funcionamento desse sistema e como ocorre essa interação, será mostrado alguns exemplos práticos.

3.1 Interação entre usuário e servidor

Veja o exemplo onde definimos a saída ui para gerar um texto.

textOutput(outputId = "text")

O server deve está referenciado para gerar o retorno para o usuário, da seguinte maneira

output$text <- renderText({
    
  })

Entre as chaves {} é colocado a função em R que gera o retorno para o usuário, a construção dessa função depende do que foi definido no input(). Para a maioria das aplicações será necessário criar uma função reactiva para que a comunição entre o usuário e o servidor ocorra.

3.2 Exemplo 1

Aplicação usando estruturas de tabelas para visualização de dados estruturados.

3.2.1 Tabelas com tableOutput.

A seguir é mostrado uma pequena aplicação usando dataset iris, neste exemplo não há a necessidade de criar uma função reativa.

ui <- fluidPage(
  titlePanel("Aplicativo Shiny com dataset IRIS"),
             sidebarLayout(
        sidebarPanel(
        h2("Exemplo 1"),
        p("Este exemplo mostra a interação entre UI e SERVER, 
        sem que tenha a necessidade de uma função reativa.")),

               mainPanel(
                 tabsetPanel(
                   tabPanel("Dados",tableOutput("dadosId"))
   )
  )
 )
)               
server <- function(input, output){
  output$dadosId <- renderTable(head(dados))}   

shinyApp(ui = ui, server = server)

Dentro da função fluidPage() é adicionado o título e criado um layout com sidebarLayout(), com sidebarPanel() é configurado um painel lateral e usando mainPanel() é criado a área principal, onde é configurado os tabPanel(). Observa-se que a saída tableOutput("dadosId")) e renderização output$dadosId <- renderTable() usada neste exemplo é bem simples. Veja o resultado na Figura 3.1.

Aplicação Shiny usando a função ***tableOutput()***.

Figure 3.1: Aplicação Shiny usando a função tableOutput().

Fonte: Elaborado pela Autora.

3.3 Exemplo 2

Aplicação usando visualizações gráficas dos dados brutos mostrados no Exemplo 1.

3.3.1 Gráficos com plotOutput.

Melhorando um pouco mais a aplicação, utilizou-se a função plotOutput() para gerar um histograma para a variável Sepal.Width.

ui <- fluidPage(
  titlePanel("Aplicativo Shiny com dataset IRIS"),
             sidebarLayout(
        sidebarPanel(
        h2("Exemplo 2"),
        p("Este exemplo mostra a interação entre UI e SERVER, 
        sem que tenha a necessidade de uma função reativa.")),

               mainPanel(
                 tabsetPanel(
                   tabPanel("Dados",tableOutput("dadosId")),
                   tabPanel("Gráfico", plotOutput("plotId"))
   )
  )
 )
)               
server <- function(input, output){
  output$dadosId <- renderTable(head(dados))

  
  output$plotId <- renderPlot({
    hist(Sepal.Width, col = "red")})

  }   

shinyApp(ui = ui, server = server)

A estrutura segue o mesmo modelo criando na Figura 3.1, acrescentando uma saída e sua respectiva renderização para a plotagem de uma histograma. Veja o resultado na Figura 3.2.

Aplicação Shiny usando a função ***plotOutput()***.

Figure 3.2: Aplicação Shiny usando a função plotOutput().

Fonte: Elaborado pela Autora.

3.4 Exemplo 3

Aplicação usando funções do R para obtenção de estatísticas resumo dos dados.

3.4.1 Estatísticas resumo com verbatimTextOutput.

Usando a função verbatimTextOutput() para obter algumas estatísticas a partir dos dados.

ui <- fluidPage(
  titlePanel("Aplicativo Shiny com dataset IRIS"),
             sidebarLayout(
        sidebarPanel(
        h2("Exemplo 3"),
        p("Este exemplo mostra a interação entre UI e SERVER, 
          sem que tenha a  necessidade de uma função reativa.")),

               mainPanel(
                 tabsetPanel(
                   tabPanel("Dados",tableOutput("dadosId")),
                   tabPanel("Gráfico", plotOutput("plotId")),
                   tabPanel("Summary", verbatimTextOutput("sumId"))
   )
  )
 )
)               
server <- function(input, output){
  output$dadosId <- renderTable(head(dados))

  
  output$plotId <- renderPlot({
    hist(Sepal.Width, col = "red")})
  
  output$sumId <- renderPrint(summary(dados))

  }   

shinyApp(ui = ui, server = server)

A função verbatimTextOutput() possui a renderização renderPrint() que como o próprio nome já diz retorna um print, que neste caso e um print da saída do próprio software R. O Resultado pode ser visualizado na Figura 3.3.

Aplicação Shiny usando a função ***`verbatimTextOutput()***.

Figure 3.3: Aplicação Shiny usando a função `verbatimTextOutput().

Fonte: Elaborado pela Autora.

Os exemplos mostrados neste capítulo não fizeram uso da função reactive, no próximo capítulo é mostrado a construção de uma função reactiva utilizando como base as aplicações mostradas neste capítulo.