library(rvest)
library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.1.4 ✔ readr 2.1.5
✔ forcats 1.0.0 ✔ stringr 1.5.1
✔ ggplot2 3.5.1 ✔ tibble 3.2.1
✔ lubridate 1.9.3 ✔ tidyr 1.3.1
✔ purrr 1.0.2
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ readr::guess_encoding() masks rvest::guess_encoding()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(leaflet)
<- read_html("https://en.wikipedia.org/wiki/List_of_City_University_of_New_York_institutions") |>
CUNYs html_element("tbody") |>
html_elements("tr td:nth-child(2)") |>
html_elements("a")
<- data.frame(name = CUNYs |> html_text(),
CUNYs link = CUNYs |> html_attr("href")
)
<- function(url){
get_cuny_gps <- read_html(url) |> html_element(".geo") |> html_text() |> str_split_1(";")
COORDS <- as.numeric(COORDS[1])
LAT <- as.numeric(COORDS[2])
LON list(LAT=LAT, LON=LON)
}
<- CUNYs |>
CUNYs mutate(link = paste0("https://en.wikipedia.org/", link)) |>
rowwise() |>
mutate(gps = list(get_cuny_gps(link))) |>
unnest_wider(gps)
<- leaflet() |>
MAP addTiles() |>
addMarkers(CUNYs$LON,
$LAT,
CUNYspopup=CUNYs$name,
options = popupOptions(closeOnClick=FALSE))
MAP