У меня есть CSV и шейп-файл с районами и многими социально-демографическими переменными (доход, население, цена за квадратный метр и уровень преступности). Я могу объединить их, и я могу выбрать, какую переменную я хочу видеть отображенной на листовой карте с выпадающим списком. Чем сильнее заполнение, тем выше значение. Эта часть проста. До сих пор работает следующий упрощенный код:
library(shiny)
library(shinydashboard)
library(leaflet)
library(rgdal)
#### LOAD DATA ####
CSVDataFrame<- read.csv("CSVDataFrame.csv")
shapeData <- readOGR("districts.shp")
CSVDataFrame <- merge(CSVDataFrame,shapeData, by=c("id"))
################ FUNCTION ################
DataType <- function(x) {
switch(x,
"Population" = CSVDataFrame$Population,
"Income" = CSVDataFrame$Income,
"Square Meter Price" = CSVDataFrame$SQMP,
"Crime Rate" = CSVDataFrame$CrimeRate,
)
}
################ UI ################
ui <- dashboardPage(
dashboardHeader(title = "Districts"),
dashboardSidebar(
sidebarMenu(
selectInput("pType", "",
list("Population",
"Income",
"Square Meter Price",
"Crime Rate",
))
)),
dashboardBody(
tabBox(
width = 12, title = tagList(shiny::icon("map"), "Created by me"),
tabPanel("Districts viewer",
tags$style(type = "text/css", "#map {height: calc(100vh - 80px) !important;}"),
leafletOutput("map",height = "75vh"))
)
)
)
################ SERVER ################
server <- function(input, output) {
output$map <- renderLeaflet({
leaflet() %>%
addProviderTiles(providers$CartoDB.Positron,
options = providerTileOptions(noWrap = TRUE)
) %>%
setView(lng = -58.450034, lat = -34.599585, zoom = 12) %>%
addPolygons(data= shapeData,weight=0,col = "Red", popup=paste(DataType(input$pType), sep=" <br>") ,
fillOpacity = (DataType(input$pType))/max(DataType(input$pType)))
})
leafletOutput('map', height=2000)
}
shinyApp(ui, server)
Это работает просто отлично. Теперь мне нужно добавить ползунок (sliderInput), способный помещать данные из входных данных MIN в MAX. Я опробовал некоторые коды, но я не знаю, как:
1) Сделайте значения MIN и MAX в обновлении sliderInput после того, как я выберу переменную в раскрывающемся списке (я могу сделать так, чтобы вход слайдера принял MIN и MAX для одной статической переменной, но это не то, что мне нужно)
2) Сделайте подмножество ползунка переменной, которую я сейчас вижу.
Помощь с благодарностью! Спасибо