(Btw, is there any other package that will do what I want?)
Here is my dataset:
> head(df) id groupID lat lon 511 1 277706 -10.89834 -37.05893 377 2 277706 -10.88870 -37.07695 98 3 277705 -10.89050 -37.09406 392 4 277697 -10.92131 -37.10525 6 5 277705 -10.89050 -37.09406 364 6 277697 -10.93730 -37.11600
I want to use a leaflet to build each line on the map depending on their latitude and longitude. In addition, each marker (either popup or CircleMarker) must have a different color and layer based on the groupID variable.
The problem is changing the data every day, and I don't know how many different unique levels I will have for the groupID variable. There are 12 levels in this sample dataset, but can vary from 5 to 30. The examples in the documentation work with a predetermined number of levels.
Here is what I tried:
colorsmap = colors()[1:length(unique(df3$groupID))] groupColors = colorFactor(palette = "RdYlBu", domain = df3$groupID) leaflet(data = df3) %>% addTiles() %>% addCircleMarkers(lng = ~lon, lat = ~lat, color = ~groupColors(groupID), group = ~groupID) %>% #addLegend(position = "topright", pal = groupColors, values = ~groupID) %>% addLayersControl(~groupID)
It provides a plot, but when I select only one level, the others do not disappear, as they should:
Picture

The dataset itself:
> dput(df3) structure(list(id = 1:20, groupID = c(277698L, 277715L, 277704L, 277706L, 277705L, 277705L, 277719L, 277705L, 277705L, 277709L, 277706L, 277705L, 277704L, 277706L, 277715L, 277702L, 277719L, 277706L, 277715L, 277706L), lat = c(-10.8172615660655, -10.8904055150991, -10.8887597563482, -10.90203509, -10.9001514, -10.8997748900025, -10.8960177351343, -10.8896179908615, -10.8991450456802, -10.9224848475651, -10.9000373151094, -10.8905013650562, -10.8889438100208, -10.9001234797436, -10.8861897462579, -10.9326053452642, -10.8916601751623, -10.902075281944, -10.8822231928033, -10.9079483812524), lon = c(-36.9248145687343, -37.0665064455395, -37.0921721937304, -37.05829295, -37.0969278, -37.0976847916125, -37.0840372102666, -37.0963566353117, -37.0945971936751, -37.0549293249471, -37.066113628594, -37.0940632483155, -37.095505683692, -37.0590422449149, -37.0782556623101, -37.0698746017798, -37.0841003949028, -37.0593363285999, -37.0724709841895, -37.0817244836096)), .Names = c("id", "groupID", "lat", "lon"), row.names = c(20L, 23L, 8L, 36L, 14L, 13L, 16L, 2L, 11L, 1L, 26L, 6L, 5L, 31L, 22L, 50L, 17L, 34L, 25L, 42L), class = "data.frame")