gh_users
and gh_repos
are lists with
information for 6 GitHub users and up to 30 of each user’s
repositories.
library(purrr)
map_chr(gh_users, "login")
#> [1] "gaborcsardi" "jennybc" "jtleek" "juliasilge" "leeper"
#> [6] "masalmon"
map_chr(gh_users, 18)
#> [1] "Gábor Csárdi" "Jennifer (Jenny) Bryan" "Jeff L."
#> [4] "Julia Silge" "Thomas J. Leeper" "Maëlle Salmon"
map_dfr(gh_users, `[`, c("login", "name", "id", "location"))
#> # A tibble: 6 × 4
#> login name id location
#> <chr> <chr> <int> <chr>
#> 1 gaborcsardi Gábor Csárdi 660288 Chippenham, UK
#> 2 jennybc Jennifer (Jenny) Bryan 599454 Vancouver, BC, Canada
#> 3 jtleek Jeff L. 1571674 Baltimore,MD
#> 4 juliasilge Julia Silge 12505835 Salt Lake City, UT
#> 5 leeper Thomas J. Leeper 3505428 London, United Kingdom
#> 6 masalmon Maëlle Salmon 8360597 Barcelona, Spain
Peek at some info from first repo for the first user.
str(gh_repos[[1]][[1]][c("full_name", "html_url", "description")])
#> List of 3
#> $ full_name : chr "gaborcsardi/after"
#> $ html_url : chr "https://github.com/gaborcsardi/after"
#> $ description: chr "Run Code in the Background"
Get full name of each user’s 11th repo.
map_chr(gh_repos, list(11, "full_name"))
#> [1] "gaborcsardi/debugme"
#> [2] "jennybc/access-r-source"
#> [3] "jtleek/datawomenontwitter"
#> [4] "juliasilge/juliasilge.github.io"
#> [5] "leeper/congressional-district-boundaries"
#> [6] "masalmon/geoparsing_tweets"
Do you want to parse it yourself? There are functions that return the paths to local JSON and XML files.
c(gh_users_json(), gh_repos_json(), gh_users_xml(), gh_repos_xml())
#> [1] "/home/runner/work/_temp/Library/repurrrsive/extdata/gh_users.json"
#> [2] "/home/runner/work/_temp/Library/repurrrsive/extdata/gh_repos.json"
#> [3] "/home/runner/work/_temp/Library/repurrrsive/extdata/gh_users.xml"
#> [4] "/home/runner/work/_temp/Library/repurrrsive/extdata/gh_repos.xml"
Let’s get the full name of each user’s 11th repo, but this time using the XML representation.
library(xml2)
repo_xml <- read_xml(gh_repos_xml())
repo_names <- map_chr(xml_find_all(repo_xml, "//full_name"), xml_text)
elevenses <-
11 + cumsum(c(0, head(table(gsub("(.*)/.*", "\\1", repo_names)), -1)))
repo_names[elevenses]
#> [1] "gaborcsardi/debugme"
#> [2] "jennybc/access-r-source"
#> [3] "jtleek/datawomenontwitter"
#> [4] "juliasilge/juliasilge.github.io"
#> [5] "leeper/congressional-district-boundaries"
#> [6] "masalmon/geoparsing_tweets"