rgeos provides functions that will let you do an end-around.
This plots a grayed-out leaflet map of NYC:
leaflet() %>%
addTiles(urlTemplate = "http://{s}.tiles.wmflabs.org/bw-mapnik/{z}/{x}/{y}.png", attribution = '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>') %>%
setView(-73.97125, 40.78306, zoom=10)
However, it's hard to pick-out the city from the rest of the metro area. One way to do so is to make a polygon from the city boundaries, and then add that to the map in a darker color.
library(rgeos)
#NYC is a shapefile of NYC city boundaries
test <- gIntersection(NYC, NYC, byid=FALSE) # create a spatial polygon by intersecting the city with itself
test <- spTransform(test, CRS("+proj=longlat +datum=WGS84")) # force the polygon to the same crs as leaflet maps
All that is left to do is use "addPolygons" to put "test" on the original map.
leaflet() %>%
addTiles(urlTemplate = "http://{s}.tiles.wmflabs.org/bw-mapnik/{z}/{x}/{y}.png", attribution = '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>') %>%
setView(-73.97125, 40.78306, zoom=10) %>%
addPolygons(data=test, weight = 3, color = "black")
There may be more elegant ways to transform the shapefile to a polygon, but from a practical standpoint, this approach is pretty simple. Hope it helps.