Сброс ввода $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 на пользовательском интерфейсе)?

0 ответов

Другие вопросы по тегам