Карта листовок для функции l oop - PullRequest
0 голосов
/ 06 мая 2020

Надеюсь, кто-нибудь сможет мне помочь с функцией for l oop, которую я создал для создания карт Leaflet ... У меня в основном два вопроса: я объединил данные с файлом формы в объединенный фрейм данных. На основе этого фрейма данных я хочу создать несколько карт листовок для использования в Shiny dashboard. Однако, когда я хочу l oop поверх этого фрейма данных, я получаю сообщение об ошибке, потому что в этом фрейме данных есть переменные, которые являются символами (идентификатор, на основе которого я объединил файл данных с файлом формы), а многоугольники находятся в фрейме данных также. Второй вопрос, который я хочу задать: как мне включить создание цветовой палитры (см. Код ниже) в мою функцию for l oop? Поскольку каждая переменная, которую я хочу увеличить в своей функции, имеет разный диапазон значений и, следовательно, должна иметь другую цветовую палитру и сопровождающую легенду на карте листовок. Смотрите мой код ниже и то, как он должен выглядеть, как на картинке ниже (ссылка, поскольку я еще не могу публиковать изображения в основном сообщении). Большое, большое спасибо заранее!

library(rgdal)
library(cbsodataR)
library(tidyverse)
library(leaflet.extras)
library(RColorBrewer)

#Load shapefile 
ShapefileWijken <- readOGR("/Users/anne/Desktop/RondeVenen/ALGEMEEN_DATA/SHAPEFILES_DRV_6PC_5PC_Gemeente/WijkenEnBuurten/WijkenEnBuurten.shp")

#Load in data from Dutch public open data base
Maps <- cbs_get_data("84583NED", 
  select=c("AantalInwoners_5","HuishoudensTotaal_28", 
           "Woningvoorraad_34", "GemiddeldInkomenPerInkomensontvanger_65"))

#Merge shape file and data into one spatial dataframe
MAPS <- merge(ShapefileWijken, 
              Maps, 
              by.x = "BU_CODE", 
              by.y="Codering_3", 
              all=FALSE)

#Create color palette for one of the variables in the dataframe
pal <- colorNumeric(
  palette = c("#99cc33", "#009999"),
  domain = MAPS$AantalInwoners_5)

#Create for loop function to iterate over MAPS dataframe
map <- list()
for(nm in names(MAPS)) {
map[[nm]] <- leaflet()%>%
    addMapPane(name="voorgrond", zIndex =410)%>%
    addMapPane(name="achtergrond", zIndex=400)%>%
    addPolygons(data=MAPS,
                stroke = F, 
                smoothFactor = 1, 
                fillOpacity = 1,
                weight = 5,
                color = ~pal(MAPS[[nm]]), 
                label = (paste(MAPS$BU_NAAM, ":", MAPS[[nm]])),
                labelOptions = labelOptions(
                  noHide = F, 
                  textsize = "14px"),
                highlightOptions = highlightOptions(
                  color = "black",
                  weight = 2, 
                  bringToFront = TRUE), 
                options=leafletOptions(pane="achtergrond"))%>%
    addPolylines(data=MAPS, stroke = TRUE, 
                 smoothFactor = 1, 
                 fillOpacity = 0,
                 weight = 1.5, color="#000000", 
                 options=leafletOptions(pane="voorgrond"))%>%
    addLegend("bottomright", 
      pal = pal, 
      values = MAPS[[nm]],
      opacity = 1,
      na.label = "Geen data")
}

map[["AantalInwoners_5"]]


[![enter image description here][1]][1]


  [1]: https://i.stack.imgur.com/ItBGT.png
...