Спасибо @ sckott
Ваш пример дал мне простую идею, которая решает эту проблему.Будучи моим первоначальным намерением визуализировать карту, вот полностью воспроизводимый пример того, что сработало.Я решил создать новый столбец id
в таблице, который я буду использовать с данными topoJSON:
if (!require("pacman")) { install.packages("pacman") }
pacman::p_load(geojsonio, dplyr)
pacman::p_load_gh("pachamaltese/d3plus", "pachamaltese/chilemaps")
# data to visualize on a map
data3 <- tibble(
id = c(307, 295, 302, 331),
comuna = c("General Lagos", "Arica", "Camarones", "Putre"),
valor = c(400,300,200,100)
) %>%
arrange(id) %>%
mutate(id2 = row_number() - 1) # trick to match modified JSON "ids" after reading from GH
# visualize using SpatialPolygonsDataFrame
r15 <- subset(chilemaps::comunas, region_id == 15)
d3plus() %>%
d3p_data(data3) %>%
d3p_map(coords = geojsonio::topojson_json(r15), text = "comuna", tooltip = "valor") %>%
d3p_id(c("id")) %>%
d3p_colour("valor")
# visualize using topoJSON read from GitHub
r15_2 <- "https://raw.githubusercontent.com/pachamaltese/chilemaps/master/data-json/r15_arica_y_parinacota.json"
r15_2_out <- geojsonio::topojson_read(r15_2)
d3plus() %>%
d3p_data(data3) %>%
d3p_map(coords = geojsonio::topojson_json(r15_2_out), text = "comuna", tooltip = "valor") %>%
d3p_id(c("id2")) %>% # here I use id2 instead of id
d3p_colour("valor")