Estou trabalhando em uma aplicação Shiny para geração de mapas. O objetivo desta aplicação é gerar mapas utilizando a função mapview. Consegui construir uma estrutura reativa cujo output é uma variável do tipo ‘character’. Porém, não estou conseguindo utilizar esse valor output como parâmetro para a geração do mapa através de um renderMapview De uma forma simplificada, vou apresentar aqui dois códigos R (utilizando dados do pacote {geobr}) que podem ajudar a ilustrar o meu desafio.
#################################################################################
Código 01 → este código gera como saída o texto selecionado no menu.
library(shiny)
library(shinydashboard)
library(shinyWidgets)
library(geobr)
ui ← dashboardPage(
dashboardHeader(
title = "Estados do Brasil",
titleWidth = 200
),
dashboardSidebar(sidebarMenuOutput(“menu”)
),
dashboardBody(
tabsetPanel(
id = “tabs”,
tabPanel(
title = “Unidades da Federacao”,
radioGroupButtons(
inputId = “UF”,
label = “UF”,
choices = c(“all”, sort(c(“RS”, “MT”, “MS”, “SC”, “RR”, “AL”, “RJ”, “MG”, “GO”, “BA”, “PR”, “TO”, “SP”, “PE”, “RN”, “PB”, “ES”, “SE”, “PI”, “RO”, “CE”, “MA”, “PA”, “DF”, “AM”, “AC”, “AP”))),
selected = “all”,
status = “primary”,
justified = TRUE
),
fluidRow(
column(12,
verbatimTextOutput(outputId = "estado")
)
)
)
)
)
)
server ← function(input, output, session) {
output$estado <- renderPrint({input$UF})
output$menu ← renderMenu({
sidebarMenu()
})
}
shinyApp(ui, server)
#################################################################################
Código 02 → este código gera como saída o texto selecionado no menu.
library(shiny)
library(shinydashboard)
library(shinyWidgets)
library(mapview)
library(geobr)
ui ← dashboardPage(
dashboardHeader(
title = "Estados do Brasil",
titleWidth = 200
),
dashboardSidebar(sidebarMenuOutput(“menu”)
),
dashboardBody(
tabsetPanel(
id = “tabs”,
tabPanel(
title = “Unidades da Federacao”,
radioGroupButtons(
inputId = “UF”,
label = “UF”,
choices = c(“all”, sort(c(“RS”, “MT”, “MS”, “SC”, “RR”, “AL”, “RJ”, “MG”, “GO”, “BA”, “PR”, “TO”, “SP”, “PE”, “RN”, “PB”, “ES”, “SE”, “PI”, “RO”, “CE”, “MA”, “PA”, “DF”, “AM”, “AC”, “AP”))),
selected = “all”,
status = “primary”,
justified = TRUE
),
fluidRow(
column(12,
mapviewOutput("estado", height = "1000px")
)
)
)
)
)
)
server ← function(input, output, session) {
#Geracao de mapa a partir da UF selecionada. Ex.: UF = “RS”
output$estado ← renderMapview({
mapview(read_state(code_state = “RS”, year = 2020), col.regions = “orange”, layer.name = “RS”)
})
output$menu ← renderMenu({
sidebarMenu()
})
}
shinyApp(ui, server)
#################################################################################
Minha dúvida é como construir uma estrutura reativa capaz de gerar mapas a partir de dados de entrada selecionados no menu. Tentei construir estruturas mais simplificadas utilizando reactive (), observe () ou observeEvent (). Porém elas apresentaram mensagens de erro ao executar cada um dos códigos.