Сброс ввода $map_marker_click на буклет в R
Я создаю приложение, которое отображает корабли / суда на основе выбора пользователем периода времени:
y <- reactive({
noEst2 <- V_Dim_Voyage %>%
filter(CompleteGMT>(Sys.Date()), CompleteGMT<= (Sys.Date()+input$voydays)) %>%
group_by(Fkey_Dim_Vessel_Id) %>% slice(which.max(CommenceGMT))
noEst <- bind_rows(noEst,noEst2)
y <- x %>% filter(Dim_Vessel_Id %in% unique(noEst$Fkey_Dim_Vessel_Id))
})
y
является реактивным, который по существу фильтрует фрейм данных на основе пользовательского ввода (input$voydays
).
Затем создается листовка-карта на основе значений в y
,
output$posListMap <- renderLeaflet({
leaflet(y()) %>% addTiles() %>%
addProviderTiles(providers$Esri.WorldTopoMap) %>%
addMarkers(lng=~lon,lat=~lat,label = ~boatName)
})
Затем пользователь может нажать на судно, и на основании этой определенной информации, относящейся к рейсу судна, отображается на боковой панели. Я использую observe
за это.
observe({
click <- input$posListMap_marker_click
if(is.null(click))
return()
ShipName <- y()[which(y()$lat == click$lat & y()$lon == click$lng), ]$VesselName
Shipcargo <- V_Dim_Voyage %>%
filter(some conditions..) %>%
group_by(some variable..) %>%
top_n(4, voyNum)
output$cargoDT <- renderTable({
Shipcargo
})
})
Проблема, с которой я сталкиваюсь, состоит в том, что, скажем, исходя из текущего выбора, значение input$voydays
это 10. Это производит определенные сосуды в y
и пользователь затем нажимает на конкретное судно и Shipcargo
таблица отображается в интерфейсе пользователя. Однако теперь, если значение input$voydays
меняет, скажем, 4, судно, значения которого отображаются в Shipcargo
таблица, больше не существует в y
что привело к ошибке. Есть ли какой-нибудь способ, которым щелчок маркера может быть сброшен до выбора input$voydays
(который является sliderInput
на пользовательском интерфейсе)?