Skip to contents

Basics

library(dplyr, warn.conflicts = FALSE)
# Use pkgdoc and the packages you want to generate the reference for
library(pkgdoc)
library(tools)
library(datasets)

universe <- c("datasets", "tools")
url_template <- "https://www.rdocumentation.org/packages/{package}/versions/3.6.2/topics/{topic}.html"
linked <- reference_package(universe, url_template = url_template)
linked
#> # A tibble: 228 × 5
#>    topic                                             alias title concept package
#>    <chr>                                             <chr> <chr> <chr>   <chr>  
#>  1 <a href=https://www.rdocumentation.org/packages/… .pri… Prin… Utilit… tools  
#>  2 <a href=https://www.rdocumentation.org/packages/… Adob… Conv… Datase… tools  
#>  3 <a href=https://www.rdocumentation.org/packages/… AirP… Mont… Datase… datase…
#>  4 <a href=https://www.rdocumentation.org/packages/… BJsa… Sale… Datase… datase…
#>  5 <a href=https://www.rdocumentation.org/packages/… BOD   Bioc… Datase… datase…
#>  6 <a href=https://www.rdocumentation.org/packages/… CO2   Carb… Datase… datase…
#>  7 <a href=https://www.rdocumentation.org/packages/… CRAN… CRAN… NA      tools  
#>  8 <a href=https://www.rdocumentation.org/packages/… Chic… Weig… Datase… datase…
#>  9 <a href=https://www.rdocumentation.org/packages/… DNase Elis… Datase… datase…
#> 10 <a href=https://www.rdocumentation.org/packages/… EuSt… Dail… Datase… datase…
#> # ℹ 218 more rows

select(linked, topic)
#> # A tibble: 228 × 1
#>    topic                                                                        
#>    <chr>                                                                        
#>  1 <a href=https://www.rdocumentation.org/packages/tools/versions/3.6.2/topics/…
#>  2 <a href=https://www.rdocumentation.org/packages/tools/versions/3.6.2/topics/…
#>  3 <a href=https://www.rdocumentation.org/packages/datasets/versions/3.6.2/topi…
#>  4 <a href=https://www.rdocumentation.org/packages/datasets/versions/3.6.2/topi…
#>  5 <a href=https://www.rdocumentation.org/packages/datasets/versions/3.6.2/topi…
#>  6 <a href=https://www.rdocumentation.org/packages/datasets/versions/3.6.2/topi…
#>  7 <a href=https://www.rdocumentation.org/packages/tools/versions/3.6.2/topics/…
#>  8 <a href=https://www.rdocumentation.org/packages/datasets/versions/3.6.2/topi…
#>  9 <a href=https://www.rdocumentation.org/packages/datasets/versions/3.6.2/topi…
#> 10 <a href=https://www.rdocumentation.org/packages/datasets/versions/3.6.2/topi…
#> # ℹ 218 more rows

You may generate a clickable table is with knitr::kable().

pick <- linked |>
  select(topic, title, concept, package) |>
  head()

pick |> knitr::kable(col.names = NULL)
.print.via.format Printing Utilities Utilities tools
Adobe_glyphs Conversion Tables between Character Sets Datasets available by data() tools
AirPassengers Monthly Airline Passenger Numbers 1949-1960 Datasets available by data() datasets
BJsales Sales Data with Leading Indicator Datasets available by data() datasets
BOD Biochemical Oxygen Demand Datasets available by data() datasets
CO2 Carbon Dioxide Uptake in Grass Plants Datasets available by data() datasets

You may generate a searchable table with DT::datatable().

# `escape = FALSE` shows the link (defaults to showing the underlying URL)
pick |> DT::datatable(escape = FALSE)

Organization and customization

In a meta-package you may organize the documentation of the entire universe in a single place, maybe organized by package or concept (via #' @family). You may create your own custom tables with DT or other packages.

custom_table <- function(data, search = "") {
  DT::datatable(
    data,
    escape = FALSE,
    rownames = NULL,
    options = list(
      # fti =  f: filter, t: table, i: information
      dom = "fti", search = list(search = search)
    )
  )
}
  • Datasets available by data()
by_concept <- filter(pick, concept == "Datasets available by data()")

by_concept |> custom_table(search = "car")
  • Documentation in tools
by_package <- filter(pick, package == "tools")

by_package |> custom_table(search = "Utilities")

Presentation

In a meta-package, you may use pkgdoc in an article, then use it to override the default Reference component.

For an example see the pkgdown Reference of pkgdoc and follow the link to its source and see how it’s configured in _pkgdown.yml.