листовка + блестящий: «аргумент имеет нулевую длину» в значениях addLegend - PullRequest
0 голосов
/ 02 ноября 2019

Я разрабатываю блестящее приложение для отображения картограммы, используя листовки и шейп-файлы для добавления полигонов. Снаружи блестящий все работает нормально, но с блестящим у меня возникла проблема при использовании addLegend следующим образом:

mypal <- reactive({
        colorBin(palette = "RdYlBu", domain = get("map_fires")[[paste0("qm_", selectedYear())]], 
                           bins = 5, reverse = TRUE, pretty = FALSE,
                           na.color = "#FFFAFA")
    })


output$map <- renderLeaflet({
        leaflet() %>% 
            addProviderTiles("OpenStreetMap.Mapnik") %>%
            addPolygons(data = map_fires,
                        stroke = TRUE, weight = 1, smoothFactor = 0.2, fillOpacity = 0.3,
                        fillColor = ~mypal()(get("map_fires")[[paste0("qm_", selectedYear())]]),
                        highlight = highlightOptions(
                            weight = 5,
                            color = "#666",
                            fillOpacity = 0.7,
                            bringToFront = TRUE),
                        label= lapply(stats_labels(), HTML), 
                        labelOptions = labelOptions(
                            style = list("font-weight" = "normal", padding = "3px 8px"),
                            textsize = "15px",
                            direction = "auto")) %>%
            addLegend(position = "bottomright", pal = ~mypal(), 
                      values = ~get("map_fires")[[paste0("qm_", selectedYear())]], 
                      opacity = 1)
    })

Код выше возвращает:

Warning: Error in if: argument is of length zero
  104: addLegend
...

Я использую paste0("qm_", selectedYear()) чтобы ссылаться на разные столбцы с годовыми данными.

Я считаю, что проблема в values = ~get("map_fires")[[paste0("qm_", selectedYear())]], но не могу сказать, почему. Я уже пытался указать набор данных на addLegend, а также поставить конкретный столбец на values = (т.е. без зависимости от реактивного значения selectedYear()), но безрезультатно.

Снаружиблестящие вещи хорошо работают с кодом ниже (где я продолжаю использовать get("map_fires")[[paste0("qm_", 2018)]], меняя selectedYear() для определенного года, просто чтобы лучше показать мой случай):

mypal <- colorBin(palette = "RdYlBu", domain = get("map_fires")[[paste0("qm_", 2018)]], 
                  bins = 5, reverse = TRUE, pretty = FALSE,
                  na.color = "#FFFAFA")

leaflet() %>% 
    addProviderTiles("OpenStreetMap.Mapnik") %>%
    addPolygons(data = map_fires,
                stroke = TRUE, weight = 1, smoothFactor = 0.2, fillOpacity = 0.3,
                fillColor = ~mypal(get("map_fires")[[paste0("qm_", 2018)]]),
                highlight = highlightOptions(
                    weight = 5,
                    color = "#666",
                    fillOpacity = 0.7,
                    bringToFront = TRUE),
                label= lapply(stats_labels, HTML), 
                labelOptions = labelOptions(
                    style = list("font-weight" = "normal", padding = "3px 8px"),
                    textsize = "15px",
                    direction = "auto")) %>%
    addLegend(position = "bottomright", pal = mypal, 
              values = get("map_fires")[[paste0("qm_", 2018)]],
              opacity = 1)

Я что-то упустил?

...