Обратите внимание, что этот вопрос был размещен at the R Shiny Google Group:Как правильно clearShapes в листовке в Блестящем приложении
После Leaflet for R/ Shiny Integration documentation, я получаю нежелательное/неожиданное поведение с функцией leafletProxy.
В приведенном ниже приложении я ожидаю, что маркеры круга появятся/исчезнут при изменении ввода $ options.
Реактивная df 'filterData', похоже, работает правильно.
Я неправильно использую листовкиProxy() или clearShapes()?
library(shiny)
library(dplyr)
library(leaflet)
my_df <- data.frame(lat = 34.72 + rnorm(1000, sd = .18),
lng = -92.5 + rnorm(1000, sd = .33),
category = c(rep("A", 300), rep("B", 300), rep("C", 400)))
ui <- bootstrapPage(
tags$style(type = "text/css", "html, body {width:100%;height:100%}"),
leafletOutput("map", height = '100%', width = '100%'),
absolutePanel(top = 10, right = 10,
checkboxGroupInput("choices", "Choices", choices = list("A","B","C"), selected = c("A","B","C")),
verbatimTextOutput("my_rows")
)
)
server <- function(input, output) {
filteredData <- reactive(my_df %>% filter(category %in% input$choices))
output$map <- renderLeaflet({ leaflet() %>% addTiles() %>% setView(lat = 34.72, lng = -92.5, zoom = 9) })
observe({
leafletProxy("map", data = filteredData()) %>% clearShapes() %>% addCircleMarkers(radius = 6, weight = 1, fillColor = "red", fillOpacity = 0.3)
})
output$my_rows <- renderPrint({ filteredData() %>% nrow() })
}
shinyApp(ui = ui, server = server)
Спасибо, но, к сожалению, это исправление не совсем работает. EG, если вы запустите приложение, удалите каждую категорию (A, B, C), а затем повторно добавьте/удалите, вы увидите нежелательное поведение. – WMC
@ user3741038 - Я забыл про «проблему с пустыми данными» - обновил свой ответ – SymbolixAU
Спасибо. Пустое df ... имеет смысл. – WMC