Вопрос, вероятно, не слишком сложный, но я не смог найти слов, чтобы правильно его погуглить.
Я строю функцию в R, которая создает карту листовки.Пользователь сможет выбрать поле, которое он хочет использовать для цветов, в виде простого аргумента функции field_color = "AREA"
, где AREA
- это имя поля в объекте sf
.
ВотВоспроизводимый пример:
library(sf)
library(leaflet)
# preparing the shapefile
nc <- st_read(system.file("gpkg/nc.gpkg", package="sf"), quiet = TRUE) %>%
st_transform(st_crs(4326)) %>%
st_cast('POLYGON')
# setting the colors
colpal <- colorNumeric(palette = "plasma", domain=nc$AREA, n=10)
# making the first map like in your example:
leaflet(nc) %>%
addTiles() %>%
addPolygons(color = ~colpal(AREA))
Этот код работает и дает:
Но в предыдущем примере AREA
является кавычкой,Если мне нужен аргумент, мне нужно назвать его так:
chosen_field = "AREA"
# setting the colors
colpal2 <- colorNumeric(palette = "plasma", domain=nc[[chosen_field]], n=10)
# making the first map like in your example:
leaflet(nc) %>%
addTiles() %>%
addPolygons(color = ~colpal2(chosen_field))
Error in UseMethod("rescale") :
no applicable method for 'rescale' applied to an object of class "character"
Таким образом, я мог бы установить chosen_field
на значение, которое я хочу автоматически изменить цвет.Однако, это не работает, и я получаю ошибку.У меня такое ощущение, что это какой-то король проблем с Нестандартной оценкой или что-то в этом роде, но я не совсем понимаю все это.Я безуспешно играл с такими функциями, как quo
, enquo
, quo_name
и т. Д.
Как правильно заставить эту работу работать?