Я хотел бы сделать блестящее приложение, в котором цвет полигонов зависит от того, на каком полигоне щелкнули. Я могу заставить его работать, когда все статично, но использование значений activitve меня расстраивает.
По сути, я думаю, что мне нужно установить аргумент домена палитры и аргумент цвета заливки как реактивные значения.
stgt.counts - мой шейп-файл.
app <- shinyApp(
ui = bootstrapPage(
leafletOutput('map'),
textOutput('text')
),
server = function(input, output) {
filtered.zone <- reactive({
paste0("count", input$map_shape_click$id)
})
filtered.domain <- reactive({
paste0("stgt.counts$count", input$map_shape_click$id)
})
output$map <- renderLeaflet({
zone <- filtered.zone()
domain <- filtered.domain()
bins <- c(0,1,2,5,6,7,8)
pal <- colorBin("YlOrRd", domain = domain, bins = bins)
m <- leaflet(stgt.counts) %>%
addProviderTiles(providers$Stamen.Toner)
m %>% addPolygons(
fillColor = ~pal(zone),
weight = 2,
layerID = ~NO,
opacity = 1,
color = "white",
dashArray = "3",
fillOpacity = 0.7
)
})
output$text <- renderText({
if (is.null(input$map_shape_click$id)) return()
print(input$map_shape_click$id)
})
}
)
runApp(app)
Текущее предупреждение, которое я получаю: «Предупреждение: ошибка в cut.default:« x »должен быть числовым». Я полагаю, это потому, что зона и домен являются строками. Это верно? Поскольку это мое первое блестящее приложение, использующее реактивы Я предполагаю, что есть намного лучший способ сделать это. Любая помощь высоко ценится.