首页 > 解决方案 > 当多个 = TRUE 时,闪亮的 selectInput 仅返回第一个值

问题描述

我正在尝试使用 selectInput 创建一个公交路线地图,该地图允许用户选择一条或多条路线,然后应该显示在地图上(使用 mapbox)。我已将“multiple”参数设置为 TRUE,以便用户可以选择多条路线。但是,由于某种原因,这没有转化为地图,它只显示选择中的第一条路线。例如,如果用户选择路线 A、B 和 C,则只有路线 A 显示在地图上。

我添加了一个文本输出来测试是否正在记录整个输入,并且确实如此。因此,当用户输入路线 A、B 和 C 时,输出文本框会显示“AB C”,但地图仍然只显示路线 A。

不知道我哪里出错了,在我看来我的空间数据集的过滤器命令应该可以工作,所以我不确定为什么会出现这种差异。我用 selectize = TRUE 和 FALSE 都试过了,同样的问题。

我的代码:

ui <- fluidPage(
  
  fluidRow(
    column(width = 12,
      verbatimTextOutput("test"), #test text output to see what the inputted routes are
  
      sidebarLayout(
        sidebarPanel = sidebarPanel(selectInput("routebox", "Filter by route: ", routes, multiple = TRUE, selectize = TRUE), width = 2),

        mainPanel = mainPanel(mapdeckOutput(
                      outputId = 'myMap'
                      , height = '500px'),
                      width = 10)
                   )
            )
          )
)


server <- function(input,output, session){
  output$myMap <- renderMapdeck({
    m
  })
  
  output$test<- renderText({ input$routebox })
   
  df_reactive <- reactive({
    route <- input$routebox
    
    #filter by selected routes
    return(
      data %>% filter(ROUTE_ID %in% route) 
    )
  })
  
  observeEvent({input$routebox},
    {mapdeck_update(map_id = 'myMap') %>%
        add_line(
          data = df_reactive()
          , layer_id = "arc_layer"
          , origin = "geometry.x"
          , destination = "geometry.y"
          , tooltip = "tooltip"
          , stroke_opacity = opacity_var
          , stroke_width = "thickness"
          , stroke_colour = color_var
          , palette = palette_var
          , update_view = FALSE
          )
      }
    )
}

shinyApp(ui=ui,server=server)

标签: rshinymapboxshiny-reactivity

解决方案


尝试这个

df_reactive <- reactive({
      data %>% filter(ROUTE_ID %in% input$routebox) 
})

或者

df_reactive <- reactive({
   data[data$ROUTE_ID %in% input$routebox,] 
})

推荐阅读