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.
<- fluidPage(
ui 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"))
)
)
)
) <- function(input, output){
server $dadosId <- renderTable(head(dados))}
output
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.

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.
<- fluidPage(
ui 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"))
)
)
)
) <- function(input, output){
server $dadosId <- renderTable(head(dados))
output
$plotId <- renderPlot({
outputhist(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.

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.
<- fluidPage(
ui 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"))
)
)
)
) <- function(input, output){
server $dadosId <- renderTable(head(dados))
output
$plotId <- renderPlot({
outputhist(Sepal.Width, col = "red")})
$sumId <- renderPrint(summary(dados))
output
}
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.

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.