Shiny selectInput 仅在 multiple = TRUE 时返回第一个值
Shiny selectInput only returning first value when multiple = TRUE
我正在尝试使用 select 输入创建公交路线地图,允许用户 select 一条或多条路线,然后应显示在地图上(使用 mapbox)。我已将“multiple”参数设置为 TRUE,以便用户可以选择多条路线。然而,出于某种原因,这并没有转化为地图,它只显示 selection 中的第一条路线。例如,如果用户 select 的路线 A、B 和 C,则只有路线 A 显示在地图上。
我添加了一个文本输出来测试整个输入是否被记录,它看起来确实如此。因此,当用户输入路线 A、B 和 C 时,输出文本框确实显示“A B 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)
试试这个
df_reactive <- reactive({
data %>% filter(ROUTE_ID %in% input$routebox)
})
或
df_reactive <- reactive({
data[data$ROUTE_ID %in% input$routebox,]
})
我正在尝试使用 select 输入创建公交路线地图,允许用户 select 一条或多条路线,然后应显示在地图上(使用 mapbox)。我已将“multiple”参数设置为 TRUE,以便用户可以选择多条路线。然而,出于某种原因,这并没有转化为地图,它只显示 selection 中的第一条路线。例如,如果用户 select 的路线 A、B 和 C,则只有路线 A 显示在地图上。
我添加了一个文本输出来测试整个输入是否被记录,它看起来确实如此。因此,当用户输入路线 A、B 和 C 时,输出文本框确实显示“A B 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)
试试这个
df_reactive <- reactive({
data %>% filter(ROUTE_ID %in% input$routebox)
})
或
df_reactive <- reactive({
data[data$ROUTE_ID %in% input$routebox,]
})