You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R Shiny selectInput切换时地图输出无变化问题求助

解决Shiny中selectInput切换时地图不更新的问题

你的问题核心是renderLeaflet里没有根据selectInput的选择过滤数据,直接用了完整的df_tidy数据集,所以不管选什么选项,地图都会显示全部标记。

修改方案:

在renderLeaflet函数里,通过input$Classifi_1获取当前选中的业务类型,过滤数据集后再传递给地图标记:

修改后的server代码:

server <- function(input, output) {
    output$mymap <- renderLeaflet({
      # 根据选中的业务类型过滤数据
      filtered_data <- df_tidy[df_tidy$Classifi_1 == input$Classifi_1, ]
      
      leaflet()%>%
        addTiles()%>%
        addMarkers(data = filtered_data, popup = filtered_data$Business_N)
    })
}

完整可运行代码:

ui <- dashboardPage(
  dashboardHeader(title = "Businesses in South Bend"),
  dashboardSidebar(),
  dashboardBody(
  fluidPage(
    titlePanel("Business by Type"),
    sidebarLayout(
        sidebarPanel(
            selectInput(inputId = 'Classifi_1',
                        label = 'Choose Business Type',
                        choices = unique(df_tidy$Classifi_1),
                        selected = 'TAXI VEHICLE')
        ),

        mainPanel(
          tabsetPanel(
            tabPanel(title = 'Map',
                     leafletOutput(outputId = 'mymap'))
          )
        )
    )
)))

server <- function(input, output) {
    output$mymap <- renderLeaflet({
      filtered_data <- df_tidy[df_tidy$Classifi_1 == input$Classifi_1, ]
      
      leaflet()%>%
        addTiles()%>%
        addMarkers(data = filtered_data, popup = filtered_data$Business_N)
    })
}

shinyApp(ui, server)

如果你的df_tidy是动态生成的(比如从数据库实时读取),可以把过滤逻辑放到reactive表达式里,提升重复切换时的性能:

server <- function(input, output) {
    # 用reactive缓存过滤后的数据,避免重复计算
    filtered_data <- reactive({
      df_tidy[df_tidy$Classifi_1 == input$Classifi_1, ]
    })
    
    output$mymap <- renderLeaflet({
      leaflet()%>%
        addTiles()%>%
        addMarkers(data = filtered_data(), popup = filtered_data()$Business_N)
    })
}

内容的提问来源于stack exchange,提问作者corinbog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 03:45:33