Реактивная фильтрация данных с использованием множественного ввода в R Shiny - PullRequest
0 голосов
/ 17 апреля 2019

Я разрабатываю блестящее приложение, отображающее карту листовки.Я сталкиваюсь с той же ситуацией, что и в этом разделе: Динамическое изменение карты листов на основе множественных реактивных выражений

Я попытался установить подкадр данных в соответствии с множественным выбором входных данных, чтобы создать динамическийкарта.Но мне не удалось справиться с ошибкой длины вектора: «длина объекта не кратна длине объекта».Это было исправлено в другой теме с изменением оператора "==" на "% 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)

Я действительно понимаю, почему возникает эта проблема ( Почему я получаю «предупреждение, что длинная длина объекта не кратна короткой длине объекта»? *)1011 *) и я думаю, что мне следует использовать функцию утилизации, но я не знаю, как ее настроить.У кого-нибудь есть идеи, как решить эту проблему?

1 Ответ

0 голосов
/ 29 апреля 2019

Я обнаружил свою ошибку, я вызывал список выбора входа вместо выбранного входа в реактивной функции.Решение:

selectedData <- reactive({
    req(input$year)
    req(input$area)
    sample_testsf %>% 
        dplyr::filter(annee %in% input$year & nomzone%in% input$area
        )
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...