【问题标题】:Filter Leaflet markers by input selection in R Flexdashboard通过 R Flexdashboard 中的输入选择过滤传单标记
【发布时间】:2020-07-17 09:13:27
【问题描述】:

我正在尝试根据在用户定义的日期范围内选择的内容过滤在传单地图上绘制的标记。以下代码返回无法找到 hfxLoc 对象的错误。我使用了以下方法(在 render 函数内过滤其他元素(即 renderPlot、renderValueBox 等)。我的过滤方法是否正确,或者是否需要在不同的地方发生Leaflet 代码块?

inputSelect代码如下:

selectizeInput("shiptypeInput", "Vessel type: ", choices = hfxVessels, selected = "Cargo ships", multiple = TRUE)

传单代码如下:

renderLeaflet({
  hfxLoc <- hfxETA %>%
    dplyr::filter(as.Date(eta_date) >= input$dateRange[1] & as.Date(eta_date) <=  input$dateRange[2]) %>%
  leaflet(data = hfxLoc) %>% 
  setView(lng = -60.25, lat = 46, zoom = 6) %>%
  addProviderTiles(providers$CartoDB.Positron,
                   options = providerTileOptions(minZoom = 2, maxZoom = 16)) %>%
  addMarkers(lng = ~lon, lat = ~lat, clusterOptions = markerClusterOptions())

【问题讨论】:

  • 您可以尝试从leaflet 中删除data = hfxLoc - 而不是直接调用leaflet() 而不带任何参数吗?看起来您已经将过滤后的数据作为第一个参数输入了。
  • 感谢 Ben 的工作!如此简单的修复,不敢相信我忽略了这一点,再次感谢!将其添加为答案,我会将其标记为正确。

标签: r shiny flexdashboard r-leaflet


【解决方案1】:

您可以从leaflet 中删除data = hfxLoc,因为您已经通过管道输入来自filter 结果的过滤数据。管道输入的结果数据将假定为leaflet 中的第一个参数data。

renderLeaflet({
  hfxLoc <- hfxETA %>%
    dplyr::filter(as.Date(eta_date) >= input$dateRange[1] & as.Date(eta_date) <=  input$dateRange[2]) %>%
    leaflet() %>%
    ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 2018-08-21
    相关资源
    最近更新 更多