#r #leaflet
Вопрос:
Это короткое сообщение (я надеюсь). Я пытаюсь проложить велосипедные маршруты в своем городе с помощью листовки. Но addPolylines() не нравится мой код. В чем здесь проблема?
api.velo.basel <- "https://data.bs.ch/api/records/1.0/search/?dataset=100032amp;q=amp;rows=21"
json.velorouten.basel <- read_json(api.velo.basel)
df.routen <- data.frame(do.call(rbind, json.velorouten.basel[["records"]][[2]][["fields"]][["geo_shape"]][["coordinates"]]))
x <- leaflet() %>%
addTiles() %>%
addPolylines(data = df.routen, lng = ~X1, lat = ~X2)
Ответ №1:
Проблема в том, что координаты задаются как список списков, а не как список чисел. Таким образом, созданный фрейм data.frame имеет столбцы типа list
, а не типа numeric
. Вам нужно дополнительно unlist
для каждой координаты, чтобы получить стандартные числовые столбцы:
df.routen <- data.frame(do.call(rbind, lapply(json.velorouten.basel[["records"]][[2]][["fields"]][["geo_shape"]][["coordinates"]], unlist)))
В качестве альтернативы (и, вероятно, более эффективного) вы также можете применить unlist
к столбцам построенного вами фрейма data.frame.
Комментарии:
1. Тх, отличная помощь =)