【问题标题】:data reactive filtering using multiple input in R Shiny在 R Shiny 中使用多个输入进行数据反应式过滤
【发布时间】:2019-09-08 02:47:33
【问题描述】:

我正在开发一个显示传单地图的闪亮应用程序。我面临的情况与此主题完全相同: Change Leaflet Map Dynamically based on Multiple Reactive expressions

我尝试根据多个输入选择对数据框进行子集化,以创建动态地图。但我没有成功处理矢量长度错误“较长的对象长度不是较短对象长度的倍数”。 这已在另一个主题中通过将“==”运算符更改为“%in%”来解决,但在我的情况下不是这样。

我的代码:


all_year <- sort(unique(sample_testsf$annee))
all_area <- sort(unique(sample_testsf$nomzone))

ui <- fluidPage(
    titlePanel("AgriPAG"),
    sidebarLayout(
        position = "right",
        mainPanel(
            tabsetPanel(
                tabPanel("Map", leafletOutput('mymap',width = "100%", height = 1000))
            )
        ),
        sidebarPanel(
            selectInput(
                inputId = "year",
                label = "Select a year to display",
                choices = all_year,
                selected = NULL,
                multiple = TRUE,
                selectize = FALSE
            ),
            selectInput(
                inputId = "area",
                label = "Select a district",
                choices = all_area,
                selected = NULL,
                multiple = TRUE,
                selectize = FALSE
            )
        )
    )
)


server <- function(input,output){

    output$mymap <- renderLeaflet({
        leaflet(data = sample_testsf) %>%
                addTiles() %>%
                setView(lng=-52.3333300, lat=4.9333300 , zoom=5)
    })

    selectedData <- reactive({
        req(input$year)
        req(input$area)
        sample_testsf %>% 
            dplyr::filter(all_year %in% input$year & all_area %in% input$area
            )
    })

    observe({
        leafletProxy("mymap", data = selectedData()) %>%
            clearShapes() %>%
            addPolygons(weight=2, col="black", opacity=0.5) 
    })
}

shinyApp(ui = ui, server = server)

我其实明白为什么会出现这个问题(Why do I get "warning longer object length is not a multiple of shorter object length"?),我想我应该使用回收功能,但我不知道如何设置它。有人知道如何解决这个问题吗?

【问题讨论】:

    标签: r filter shiny leaflet reactive


    【解决方案1】:

    我发现我的错误,我在响应函数中调用输入选择列表而不是选择的输入。解决办法:

    selectedData <- reactive({
        req(input$year)
        req(input$area)
        sample_testsf %>% 
            dplyr::filter(annee %in% input$year & nomzone%in% input$area
            )
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-11
      • 2019-10-11
      • 2018-04-03
      • 2017-03-16
      • 2020-02-01
      • 1970-01-01
      • 2021-07-29
      • 2014-05-11
      相关资源
      最近更新 更多