Author

Laurie Platt

Published

Last updated 22 July, 2023

1 Introduction

This document will capture the RAP (Reproducible Analytical Pipeline) learning from the CKP (Community Knowledge Profile) project.

The project has several factors that make it suitable for understanding RAP better:

  1. The data is open source, so data security considerations aren’t paramount.
  2. The project involves collaboration between data analysts.
  3. The pipeline is not particularly complex.

The expectation is that the notes in this document will mature and reside outside a pipeline specific repo and in a Council-wide resource such as pinsheff, a Methods Manual, or something like Hackney’s Data Platform Playbook.

1.1 Setup

Load packages and declare functions.

Code
library(renv)
library(tidyverse)
library(tools)
library(jsonlite)
library(janitor)
library(kableExtra)
library(here)

# Output & format a data frame as a table
table_style <- function(df, scroll_box = TRUE) {
  df |> 
    kbl(format.args = list(big.mark = ",")) |> 
    kable_styling(
      bootstrap_options = "striped",
      full_width = F,
      font_size = 12,
      position = "left"
    ) |>
    (\(.) if(scroll_box) scroll_box(., height = "400px") else .)()
}

2 Packaging

A requirement of the NHS Gold RAP - analysis as a product is:

Code is fully packaged.

The Government’s Analytical Services guidance includes the following RAP Principle:

Packaging.

2.1 Templates

We first looked at the repository template:
github.com/craig-shenton/rapR-package-template

However, this was too complex for a simple project that already involved learning for contributors around ggplot, version control etc.

Instead, we used create_package() function from the usethis R package and ran:
usethis::create_package(here::here(), check_name = FALSE)

2.2 Further Resources

Ch.11 Packaging your code, Building reproducible analytical pipelines with R by Bruno Rodrigues

R Packages (2e), by Hadley Wickham and Jennifer Bryan

3 Containers

Our motivation was to create a GitHub Codespace, or something like it, for the project. To allow the project to be used by anyone interested in starting to use R and contribute to the work. To pass them a URL that opened a development environment in their browser, with everything setup and ready for them to code. We haven’t succeeded in this yet, but the notes in this section include some useful reproducibility lessons.

The code in the CKP repo may not work in a year’s time if a new version of R introduces breaking changes. It might not work if some of the packages that the code in the repo depends on evolve and introduce some breaking changes. Similarly, if you’re collaborating on a project, a colleague may have different versions of the packages or R, and consequently you may get different results from the same code.

There are different ways of improving the reproducibility of code by specifying the dependencies (including versions) of what the code runs on. Containers is one option, an option that can also make other aspects easier, such as maintaining development environments, peer review, testing, deploying to the cloud for more computing power, and deploying to production.

One of the requirements of the NHS Silver RAP Maturity Level - implementing best practice is:

Repository includes dependency information (e.g. requirements.txt, PipFile, environment.yml).

Another option for R is renv.

The Government’s Analytical Services guidance includes the following RAP Principle:

Dependency management.

And, the following Reproducible Analysis Platform:

Reproducible infrastructure and containers, for example, docker.

3.1 Codespaces

Our CKP project is hosted in a public GitHub repo, so our preferred option would be GitHub Codespaces.

Codespaces does integrate with IDE’s other than VS Code. However, the example from David Smith at the 2022 RStudio Conference, only manages this via a VS Code port. We were able to replicate this for the community-knowledge-profiles repo by simply copying the .devcontainer directory from David’s example. This proved neither slick nor robust to changes, and as there’s a Posit Cloud option we didn’t spend long trying to improve this.

3.2 Posit Cloud & renv

You can login to https://posit.cloud (formerly RStudio Cloud) using your GitHub account, which makes working with GitHub repos easier.

To setup Posit Cloud for CKP:

  1. Create a New Project > New Project from Git Repository.

  2. Add the HTTPS URL for our repo.

    https://github.com/scc-pi/community-knowledge-profiles.git

  3. From the RStudio terminal call renv::restore(). This will install the necessary packages into your Posit Cloud RStudio project. It can take twenty or thirty minutes, but only for the first time as part of setting up the project.

  4. Setup your GitHub PAT for HTTPS as per Jenny Bryan’s instructions.

    https://happygitwithr.com/https-pat.html#tldr

This process isn’t as slick as we’d like for people new to R. Ideally we’d authorise their use of a cloud based development environment for the project and pass them a URL. You can’t really do this with Posit Cloud without paying.

You can share and collaborate within a Posit Cloud Space. However, the time spent by others in a project you created is registered against your time. You only have 25 hours a month on the Posit Cloud free plan, so best to save this for code reviews etc.

This Posit Cloud setup makes use of the {renv} R package which handles project level package management, as opposed to the normal system or user level package management. We made use of the following renv guidance in particular:

If you add or remove packages from the CKP project (in a repo on your laptop or in Posit Cloud) you need to update the renv.lock file by calling renv::snapshot(). Then stage, commit, and push your renv.lock change to the CKP repo. If a change to renv.lock is pulled, you need to call renv::restore() to install or remove the packages.

{renv} also integrates with RStudio Packages pane:

See Section 7 for a deeper look at {renv} and our project dependencies.

3.3 Docker

TODO

?? Rocker

?? Development Environments preview

3.4 Dev Box

Microsoft Dev Box is an interesting option that could fit well with our projects that use PID and have repos on Azure DevOps.

3.5 Further Resources

Ch.10 Basic reproducibility: freezing packages, Building reproducible analytical pipelines with R by Bruno Rodrigues

Ch.14 Reproducible analytical pipelines with Docker, Building reproducible analytical pipelines with R by Bruno Rodrigues

4 CI/CD

A requirement of the NHS Gold RAP - analysis as a product is:

Repository automatically runs tests etc. via CI/CD or a different integration/deployment tool e.g. GitHub Actions.

The Government’s Analytical Services guidance includes the following RAP Principle:

Continuous integration.

And, the following Reproducible Analysis Platform:

Continuous integration tools, for example, GitHub Actions, GitLab CI, Travis CI, Jenkins, Concourse.

4.1 Render RAP Learning Quarto

To render the RAP Learning Quarto (rap-docs\rap-learning.qmd) to GitHub Pages at scc-pi.github.io/community-knowledge-profiles we used the public GitHub repo quarto-dev/quarto-actions. In particular we followed the:

  1. Basic example
    Added quarto-publish.yml to .github\workflows.

    1. We had to specify the .qmd file when doing the one time local quarto publish :
      quarto publish gh-pages rap-docs\rap-learning.qmd.qmd
      Otherwise we got an error like:
      ERROR: The specified path (C:\repo\community-knowledge-profiles) is not a website or book project so cannot be published.

    2. Added a .gitignore file in \rap-docs with *.html to exclude local renderings.

  2. Non top level projects example
    Added path: rap-docs to our quarto-publish.yml file.

4.2 Render CKP PDFs

TODO

4.3 Further Resources

GitHub Actions documentation

Publish Quarto to GitHub Pages

Ch.15 Continuous integration and continuous deployment, Building reproducible analytical pipelines with R by Bruno Rodrigues

5 Code Reviews

TODO

6 Version Control

TODO

7 Explore {renv}

7.1 Lock file

Our renv.lock file includes a lot of packages. We’ve not used {renv} before, so we need to check that the renv.lock file is right and that we’re using {renv} correctly.

Code
# Convert the renv.lock json file to a data frame
renv_lock <- fromJSON(here("renv.lock"))$Packages |> 
  enframe() |> 
  as_tibble() |> 
  unnest_wider(value) |> 
  clean_names() |> 
  select(-name, -hash)

table_style(renv_lock)
package version source repository requirements
DBI 1.1.3 Repository CRAN R , methods
MASS 7.3-60 Repository CRAN R , grDevices, graphics , methods , stats , utils
Matrix 1.5-4 Repository CRAN R , graphics, grid , lattice , methods , stats , utils
R6 2.5.1 Repository CRAN R
RColorBrewer 1.1-3 Repository CRAN R
Rcpp 1.0.11 Repository CRAN methods, utils
askpass 1.1 Repository CRAN sys
backports 1.4.1 Repository CRAN R
base64enc 0.1-3 Repository CRAN R
bit 4.0.5 Repository CRAN R
bit64 4.0.5 Repository CRAN R , bit , methods, stats , utils
blob 1.2.4 Repository CRAN methods, rlang , vctrs
broom 1.0.5 Repository CRAN R , backports, dplyr , ellipsis , generics , glue , lifecycle, purrr , rlang , stringr , tibble , tidyr
bslib 0.5.0 Repository CRAN R , base64enc, cachem , grDevices, htmltools, jquerylib, jsonlite , memoise , mime , rlang , sass
cachem 1.0.8 Repository CRAN fastmap, rlang
callr 3.7.3 Repository CRAN R , R6 , processx, utils
cellranger 1.1.0 Repository CRAN R , rematch, tibble
cli 3.6.1 Repository CRAN R , utils
clipr 0.8.0 Repository CRAN utils
codetools 0.2-19 Repository CRAN R
colorspace 2.1-0 Repository CRAN R , grDevices, graphics , methods , stats
commonmark 1.9.0 Repository CRAN NULL
conflicted 1.2.0 Repository CRAN R , cli , memoise, rlang
cpp11 0.4.5 Repository CRAN NULL
crayon 1.5.2 Repository CRAN grDevices, methods , utils
curl 5.0.1 Repository CRAN R
data.table 1.14.8 Repository CRAN R , methods
dbplyr 2.3.3 Repository CRAN DBI , R , R6 , blob , cli , dplyr , glue , lifecycle , magrittr , methods , pillar , purrr , rlang , tibble , tidyr , tidyselect, utils , vctrs , withr
digest 0.6.33 Repository CRAN R , utils
dplyr 1.1.2 Repository CRAN R , R6 , cli , generics , glue , lifecycle , magrittr , methods , pillar , rlang , tibble , tidyselect, utils , vctrs
dtplyr 1.3.1 Repository CRAN R , cli , data.table, dplyr , glue , lifecycle , rlang , tibble , tidyselect, vctrs
ellipsis 0.3.2 Repository CRAN R , rlang
evaluate 0.21 Repository CRAN R , methods
fansi 1.0.4 Repository CRAN R , grDevices, utils
farver 2.1.1 Repository CRAN NULL
fastmap 1.1.1 Repository CRAN NULL
fontawesome 0.5.1 Repository CRAN R , htmltools, rlang
forcats 1.0.0 Repository CRAN R , cli , glue , lifecycle, magrittr , rlang , tibble
fs 1.6.2 Repository CRAN R , methods
furrr 0.3.1 Repository CRAN R , future , globals , lifecycle, purrr , rlang , vctrs
future 1.33.0 Repository CRAN digest , globals , listenv , parallel , parallelly, utils
gargle 1.5.2 Repository CRAN R , cli , fs , glue , httr , jsonlite , lifecycle, openssl , rappdirs , rlang , stats , utils , withr
generics 0.1.3 Repository CRAN R , methods
ggplot2 3.4.2 Repository CRAN MASS , R , cli , glue , grDevices, grid , gtable , isoband , lifecycle, mgcv , rlang , scales , stats , tibble , vctrs , withr
globals 0.16.2 Repository CRAN R , codetools
glue 1.6.2 Repository CRAN R , methods
googledrive 2.1.1 Repository CRAN R , cli , gargle , glue , httr , jsonlite , lifecycle, magrittr , pillar , purrr , rlang , tibble , utils , uuid , vctrs , withr
googlesheets4 1.1.1 Repository CRAN R , cellranger , cli , curl , gargle , glue , googledrive, httr , ids , lifecycle , magrittr , methods , purrr , rematch2 , rlang , tibble , utils , vctrs , withr
gtable 0.3.3 Repository CRAN R , cli , glue , grid , lifecycle, rlang
haven 2.5.3 Repository CRAN R , cli , cpp11 , forcats , hms , lifecycle , methods , readr , rlang , tibble , tidyselect, vctrs
here 1.0.1 Repository CRAN rprojroot
highr 0.10 Repository CRAN R , xfun
hms 1.1.3 Repository CRAN lifecycle, methods , pkgconfig, rlang , vctrs
htmltools 0.5.5 Repository CRAN R , base64enc, digest , ellipsis , fastmap , grDevices, rlang , utils
httpuv 1.6.11 Repository CRAN R , R6 , Rcpp , later , promises, utils
httr 1.4.6 Repository CRAN R , R6 , curl , jsonlite, mime , openssl
httr2 0.2.3 Repository CRAN R , R6 , cli , curl , glue , magrittr, openssl , rappdirs, rlang , withr
ids 1.0.1 Repository CRAN openssl, uuid
isoband 0.2.7 Repository CRAN grid , utils
janitor 2.2.0 Repository CRAN R , dplyr , hms , lifecycle , lubridate , magrittr , purrr , rlang , snakecase , stringi , stringr , tidyr , tidyselect
jquerylib 0.1.4 Repository CRAN htmltools
jsonlite 1.8.7 Repository CRAN methods
kableExtra 1.3.4 Repository CRAN R , digest , glue , grDevices , graphics , htmltools , knitr , magrittr , rmarkdown , rstudioapi , rvest , scales , stats , stringr , svglite , tools , viridisLite, webshot , xml2
knitr 1.43 Repository CRAN R , evaluate, highr , methods , tools , xfun , yaml
labeling 0.4.2 Repository CRAN graphics, stats
later 1.3.1 Repository CRAN Rcpp , rlang
lattice 0.21-8 Repository CRAN R , grDevices, graphics , grid , stats , utils
lifecycle 1.0.3 Repository CRAN R , cli , glue , rlang
listenv 0.9.0 Repository CRAN R
lubridate 1.9.2 Repository CRAN R , generics , methods , timechange
magrittr 2.0.3 Repository CRAN R
memoise 2.0.1 Repository CRAN cachem, rlang
mgcv 1.8-42 Repository CRAN Matrix , R , graphics, methods , nlme , splines , stats , utils
mime 0.12 Repository CRAN tools
modelr 0.1.11 Repository CRAN R , broom , magrittr , purrr , rlang , tibble , tidyr , tidyselect, vctrs
munsell 0.5.0 Repository CRAN colorspace, methods
nlme 3.1-162 Repository CRAN R , graphics, lattice , stats , utils
onsr 1.0.1 Repository CRAN R , httr , jsonlite, readr , tibble
openssl 2.1.0 Repository CRAN askpass
packrat 0.9.1 Repository CRAN R , tools, utils
parallelly 1.36.0 Repository CRAN parallel, tools , utils
pillar 1.9.0 Repository CRAN cli , fansi , glue , lifecycle, rlang , utf8 , utils , vctrs
pkgconfig 2.0.3 Repository CRAN utils
prettyunits 1.1.1 Repository CRAN NULL
processx 3.8.2 Repository CRAN R , R6 , ps , utils
progress 1.2.2 Repository CRAN R6 , crayon , hms , prettyunits
promises 1.2.0.1 Repository CRAN R6 , Rcpp , later , magrittr, rlang , stats
ps 1.7.5 Repository CRAN R , utils
purrr 1.0.1 Repository CRAN R , cli , lifecycle, magrittr , rlang , vctrs
quarto 1.2 Repository CRAN jsonlite , later , processx , rmarkdown , rsconnect , rstudioapi, utils , yaml
ragg 1.2.5 Repository CRAN systemfonts, textshaping
rappdirs 0.3.3 Repository CRAN R
readr 2.1.4 Repository CRAN R , R6 , cli , clipr , cpp11 , crayon , hms , lifecycle, methods , rlang , tibble , tzdb , utils , vroom
readxl 1.4.3 Repository CRAN R , cellranger, cpp11 , progress , tibble , utils
rematch 1.0.1 Repository CRAN NULL
rematch2 2.1.2 Repository CRAN tibble
renv 1.0.0 Repository CRAN utils
reprex 2.0.2 Repository CRAN R , callr , cli , clipr , fs , glue , knitr , lifecycle , rlang , rmarkdown , rstudioapi, utils , withr
rlang 1.1.1 Repository CRAN R , utils
rmarkdown 2.23 Repository CRAN R , bslib , evaluate , fontawesome, htmltools , jquerylib , jsonlite , knitr , methods , stringr , tinytex , tools , utils , xfun , yaml
rprojroot 2.0.3 Repository CRAN R
rsconnect 1.0.1 Repository CRAN R , cli , curl , digest , jsonlite , lifecycle , openssl , packrat , renv , rlang , rstudioapi, tools , yaml
rstudioapi 0.15.0 Repository CRAN NULL
rvest 1.0.3 Repository CRAN R , cli , glue , httr , lifecycle, magrittr , rlang , selectr , tibble , withr , xml2
sass 0.4.7 Repository CRAN R6 , fs , htmltools, rappdirs , rlang
scales 1.2.1 Repository CRAN R , R6 , RColorBrewer, farver , labeling , lifecycle , munsell , rlang , viridisLite
selectr 0.4-2 Repository CRAN R , R6 , methods, stringr
shiny 1.7.4.1 Repository CRAN R , R6 , bslib , cachem , commonmark , crayon , ellipsis , fastmap , fontawesome, glue , grDevices , htmltools , httpuv , jsonlite , later , lifecycle , methods , mime , promises , rlang , sourcetools, tools , utils , withr , xtable
snakecase 0.11.0 Repository CRAN R , stringi, stringr
sourcetools 0.1.7-1 Repository CRAN R
stringi 1.7.12 Repository CRAN R , stats, tools, utils
stringr 1.5.0 Repository CRAN R , cli , glue , lifecycle, magrittr , rlang , stringi , vctrs
svglite 2.1.1 Repository CRAN R , cpp11 , systemfonts
sys 3.4.2 Repository CRAN NULL
systemfonts 1.0.4 Repository CRAN R , cpp11
textshaping 0.3.6 Repository CRAN R , cpp11 , systemfonts
tibble 3.2.1 Repository CRAN R , fansi , lifecycle, magrittr , methods , pillar , pkgconfig, rlang , utils , vctrs
tidyr 1.3.0 Repository CRAN R , cli , cpp11 , dplyr , glue , lifecycle , magrittr , purrr , rlang , stringr , tibble , tidyselect, utils , vctrs
tidyselect 1.2.0 Repository CRAN R , cli , glue , lifecycle, rlang , vctrs , withr
tidyverse 2.0.0 Repository CRAN R , broom , cli , conflicted , dbplyr , dplyr , dtplyr , forcats , ggplot2 , googledrive , googlesheets4, haven , hms , httr , jsonlite , lubridate , magrittr , modelr , pillar , purrr , ragg , readr , readxl , reprex , rlang , rstudioapi , rvest , stringr , tibble , tidyr , xml2
timechange 0.2.0 Repository CRAN R , cpp11
tinytex 0.45 Repository CRAN xfun
tzdb 0.4.0 Repository CRAN R , cpp11
utf8 1.2.3 Repository CRAN R
uuid 1.1-0 Repository CRAN R
vctrs 0.6.3 Repository CRAN R , cli , glue , lifecycle, rlang
viridisLite 0.4.2 Repository CRAN R
vroom 1.6.3 Repository CRAN R , bit64 , cli , cpp11 , crayon , glue , hms , lifecycle , methods , progress , rlang , stats , tibble , tidyselect, tzdb , vctrs , withr
webshot 0.5.5 Repository CRAN R , callr , jsonlite, magrittr
withr 2.5.0 Repository CRAN R , grDevices, graphics , stats
xfun 0.39 Repository CRAN stats, tools
xml2 1.3.5 Repository CRAN R , methods
xtable 1.8-4 Repository CRAN R , stats, utils
yaml 2.3.7 Repository CRAN NULL


There are 134 packages listed in our renv.lock file.

7.2 Base R packages

{renv} does not install or maintain your R version, it just makes a note of it in the renv.lock file.

7.2.1 All base packages

What are the base packages for our R.Version()? Some base R packages are loaded on startup, other base packages need to be explicitly loaded.

Code
base_all <- rownames(installed.packages(priority = "base")) |> 
  as_tibble() |> 
  rename(package = value) |> 
  distinct() #FUDGE: duplicates packages when rendered via Quarto,
# but not when run interactively in RStudio

table_style(base_all)
package
base
compiler
datasets
graphics
grDevices
grid
methods
parallel
splines
stats
stats4
tcltk
tools
utils


There are 14 base R packages.

7.2.2 Loaded on startup

What are the base R packages loaded on startup? i.e. packages you do not need to explicitly load.

Code
base_loaded <- c(getOption("defaultPackages"), "base") |> 
  as_tibble() |> 
  rename(package = value)

table_style(base_loaded, scroll_box = FALSE)
package
datasets
utils
grDevices
graphics
stats
methods
base

There are 7 base R packages loaded on startup.

7.2.3 Not loaded on startup

What are the base R packages not loaded on startup? i.e. packages you may need to explicitly load.

Code
base_not_loaded <- base_all |> 
  anti_join(base_loaded, by = "package")

table_style(base_not_loaded, scroll_box = FALSE)
package
compiler
grid
parallel
splines
stats4
tcltk
tools

There are 7 base R packages not loaded on startup.

7.3 Explicitly loaded

Packages explicitly loaded from the library by scripts in this project.

Code
explicit <- dependencies(here(), progress = FALSE) |> 
  clean_names() |> 
  select(package, source)

table_style(explicit)
package source
here /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/etl-ckp.R
janitor /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/etl-ckp.R
tidyverse /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/etl-ckp.R
here /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/one-ckp.qmd
tidyverse /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/one-ckp.qmd
scales /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/one-ckp.qmd
rmarkdown /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/one-ckp.qmd
here /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/ons-api.R
janitor /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/ons-api.R
onsr /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/ons-api.R
tibble /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/ons-api.R
tidyverse /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/ons-api.R
glue /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/ons-custom-dataset.R
httr2 /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/ons-custom-dataset.R
tidyverse /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/ons-custom-dataset.R
furrr /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/render-reports.R
here /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/render-reports.R
quarto /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/render-reports.R
tidyverse /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/render-reports.R
shiny /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/report-layout.qmd
here /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/report-layout.qmd
tidyverse /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/report-layout.qmd
rmarkdown /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/R/report-layout.qmd
here /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/rap-docs/rap-learning.qmd
janitor /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/rap-docs/rap-learning.qmd
jsonlite /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/rap-docs/rap-learning.qmd
kableExtra /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/rap-docs/rap-learning.qmd
renv /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/rap-docs/rap-learning.qmd
tidyverse /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/rap-docs/rap-learning.qmd
tools /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/rap-docs/rap-learning.qmd
rmarkdown /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/rap-docs/rap-learning.qmd
rmarkdown /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/rap-docs/rap-learning.rmarkdown
here /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/rap-docs/rap-learning.rmarkdown
janitor /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/rap-docs/rap-learning.rmarkdown
jsonlite /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/rap-docs/rap-learning.rmarkdown
kableExtra /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/rap-docs/rap-learning.rmarkdown
renv /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/rap-docs/rap-learning.rmarkdown
tidyverse /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/rap-docs/rap-learning.rmarkdown
tools /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/rap-docs/rap-learning.rmarkdown
renv /home/runner/work/community-knowledge-profiles/community-knowledge-profiles/renv.lock


Unique list of packages, irrespective of whether the package has been called by multiple scripts.

Code
unique_explicit <- explicit |> 
  select(package) |> 
  distinct()

table_style(unique_explicit)
package
here
janitor
tidyverse
scales
rmarkdown
onsr
tibble
glue
httr2
furrr
quarto
shiny
jsonlite
kableExtra
renv
tools


There are 16 packages explicitly loaded from the library by scripts in this project.

7.4 Implicitly loaded

“Implicit” packages that the explicitly loaded packages depend upon.

Code
options(repos = c(CRAN = "https://cloud.r-project.org"))

# I think this makes a call to CRAN
implicit <- package_dependencies( 
  packages = pull(unique_explicit, package),
  recursive = TRUE
) |> 
  enframe() |> 
  as_tibble() |> 
  unnest_longer(value) |> 
  rename(explicit = name, implicit = value)

#options(repos = c(CRAN = "https://cloud.r-project.org"))

table_style(implicit)
explicit implicit
here rprojroot
janitor dplyr
janitor hms
janitor lifecycle
janitor lubridate
janitor magrittr
janitor purrr
janitor rlang
janitor stringi
janitor stringr
janitor snakecase
janitor tidyselect
janitor tidyr
janitor cli
janitor generics
janitor glue
janitor methods
janitor pillar
janitor R6
janitor tibble
janitor utils
janitor vctrs
janitor pkgconfig
janitor timechange
janitor tools
janitor stats
janitor cpp11
janitor withr
janitor fansi
janitor utf8
janitor graphics
janitor grDevices
tidyverse broom
tidyverse conflicted
tidyverse cli
tidyverse dbplyr
tidyverse dplyr
tidyverse dtplyr
tidyverse forcats
tidyverse ggplot2
tidyverse googledrive
tidyverse googlesheets4
tidyverse haven
tidyverse hms
tidyverse httr
tidyverse jsonlite
tidyverse lubridate
tidyverse magrittr
tidyverse modelr
tidyverse pillar
tidyverse purrr
tidyverse ragg
tidyverse readr
tidyverse readxl
tidyverse reprex
tidyverse rlang
tidyverse rstudioapi
tidyverse rvest
tidyverse stringr
tidyverse tibble
tidyverse tidyr
tidyverse xml2
tidyverse backports
tidyverse ellipsis
tidyverse generics
tidyverse glue
tidyverse lifecycle
tidyverse utils
tidyverse memoise
tidyverse blob
tidyverse DBI
tidyverse methods
tidyverse R6
tidyverse tidyselect
tidyverse vctrs
tidyverse withr
tidyverse data.table
tidyverse grDevices
tidyverse grid
tidyverse gtable
tidyverse isoband
tidyverse MASS
tidyverse mgcv
tidyverse scales
tidyverse stats
tidyverse gargle
tidyverse uuid
tidyverse cellranger
tidyverse curl
tidyverse ids
tidyverse rematch2
tidyverse cpp11
tidyverse pkgconfig
tidyverse mime
tidyverse openssl
tidyverse timechange
tidyverse fansi
tidyverse utf8
tidyverse systemfonts
tidyverse textshaping
tidyverse clipr
tidyverse crayon
tidyverse vroom
tidyverse tzdb
tidyverse progress
tidyverse callr
tidyverse fs
tidyverse knitr
tidyverse rmarkdown
tidyverse selectr
tidyverse stringi
tidyverse processx
tidyverse rematch
tidyverse rappdirs
tidyverse evaluate
tidyverse highr
tidyverse tools
tidyverse xfun
tidyverse yaml
tidyverse graphics
tidyverse cachem
tidyverse nlme
tidyverse Matrix
tidyverse splines
tidyverse askpass
tidyverse prettyunits
tidyverse bslib
tidyverse fontawesome
tidyverse htmltools
tidyverse jquerylib
tidyverse tinytex
tidyverse farver
tidyverse labeling
tidyverse munsell
tidyverse RColorBrewer
tidyverse viridisLite
tidyverse bit64
tidyverse sys
tidyverse bit
tidyverse base64enc
tidyverse sass
tidyverse fastmap
tidyverse digest
tidyverse lattice
tidyverse colorspace
tidyverse ps
scales farver
scales labeling
scales lifecycle
scales munsell
scales R6
scales RColorBrewer
scales rlang
scales viridisLite
scales stats
scales graphics
scales cli
scales glue
scales colorspace
scales methods
scales utils
scales grDevices
rmarkdown bslib
rmarkdown evaluate
rmarkdown fontawesome
rmarkdown htmltools
rmarkdown jquerylib
rmarkdown jsonlite
rmarkdown knitr
rmarkdown methods
rmarkdown stringr
rmarkdown tinytex
rmarkdown tools
rmarkdown utils
rmarkdown xfun
rmarkdown yaml
rmarkdown base64enc
rmarkdown cachem
rmarkdown grDevices
rmarkdown memoise
rmarkdown mime
rmarkdown rlang
rmarkdown sass
rmarkdown digest
rmarkdown fastmap
rmarkdown ellipsis
rmarkdown highr
rmarkdown cli
rmarkdown glue
rmarkdown lifecycle
rmarkdown magrittr
rmarkdown stringi
rmarkdown vctrs
rmarkdown stats
rmarkdown fs
rmarkdown R6
rmarkdown rappdirs
onsr httr
onsr jsonlite
onsr readr
onsr tibble
onsr curl
onsr mime
onsr openssl
onsr R6
onsr methods
onsr cli
onsr clipr
onsr crayon
onsr hms
onsr lifecycle
onsr rlang
onsr utils
onsr vroom
onsr cpp11
onsr tzdb
onsr fansi
onsr magrittr
onsr pillar
onsr pkgconfig
onsr vctrs
onsr grDevices
onsr glue
onsr tools
onsr askpass
onsr utf8
onsr bit64
onsr stats
onsr tidyselect
onsr withr
onsr progress
onsr sys
onsr bit
onsr prettyunits
onsr graphics
tibble fansi
tibble lifecycle
tibble magrittr
tibble methods
tibble pillar
tibble pkgconfig
tibble rlang
tibble utils
tibble vctrs
tibble grDevices
tibble cli
tibble glue
tibble utf8
glue methods
httr2 cli
httr2 curl
httr2 glue
httr2 magrittr
httr2 openssl
httr2 R6
httr2 rappdirs
httr2 rlang
httr2 withr
httr2 utils
httr2 methods
httr2 askpass
httr2 graphics
httr2 grDevices
httr2 stats
httr2 sys
furrr future
furrr globals
furrr lifecycle
furrr purrr
furrr rlang
furrr vctrs
furrr digest
furrr listenv
furrr parallel
furrr parallelly
furrr utils
furrr codetools
furrr cli
furrr glue
furrr magrittr
furrr methods
furrr tools
quarto utils
quarto rmarkdown
quarto jsonlite
quarto yaml
quarto processx
quarto rstudioapi
quarto later
quarto rsconnect
quarto methods
quarto Rcpp
quarto rlang
quarto ps
quarto R6
quarto bslib
quarto evaluate
quarto fontawesome
quarto htmltools
quarto jquerylib
quarto knitr
quarto stringr
quarto tinytex
quarto tools
quarto xfun
quarto cli
quarto curl
quarto digest
quarto lifecycle
quarto openssl
quarto packrat
quarto renv
quarto base64enc
quarto cachem
quarto grDevices
quarto memoise
quarto mime
quarto sass
quarto fastmap
quarto ellipsis
quarto highr
quarto glue
quarto askpass
quarto magrittr
quarto stringi
quarto vctrs
quarto stats
quarto sys
quarto fs
quarto rappdirs
shiny methods
shiny utils
shiny grDevices
shiny httpuv
shiny mime
shiny jsonlite
shiny xtable
shiny fontawesome
shiny htmltools
shiny R6
shiny sourcetools
shiny later
shiny promises
shiny tools
shiny crayon
shiny rlang
shiny fastmap
shiny withr
shiny commonmark
shiny glue
shiny bslib
shiny cachem
shiny ellipsis
shiny lifecycle
shiny base64enc
shiny jquerylib
shiny memoise
shiny sass
shiny digest
shiny Rcpp
shiny cli
shiny stats
shiny magrittr
shiny graphics
shiny fs
shiny rappdirs
jsonlite methods
kableExtra knitr
kableExtra magrittr
kableExtra stringr
kableExtra xml2
kableExtra rvest
kableExtra rmarkdown
kableExtra scales
kableExtra viridisLite
kableExtra stats
kableExtra grDevices
kableExtra htmltools
kableExtra rstudioapi
kableExtra glue
kableExtra tools
kableExtra webshot
kableExtra digest
kableExtra graphics
kableExtra svglite
kableExtra utils
kableExtra methods
kableExtra base64enc
kableExtra rlang
kableExtra fastmap
kableExtra ellipsis
kableExtra evaluate
kableExtra highr
kableExtra xfun
kableExtra yaml
kableExtra bslib
kableExtra fontawesome
kableExtra jquerylib
kableExtra jsonlite
kableExtra tinytex
kableExtra cli
kableExtra httr
kableExtra lifecycle
kableExtra selectr
kableExtra tibble
kableExtra withr
kableExtra farver
kableExtra labeling
kableExtra munsell
kableExtra R6
kableExtra RColorBrewer
kableExtra stringi
kableExtra vctrs
kableExtra systemfonts
kableExtra cpp11
kableExtra callr
kableExtra cachem
kableExtra memoise
kableExtra mime
kableExtra sass
kableExtra processx
kableExtra curl
kableExtra openssl
kableExtra colorspace
kableExtra fansi
kableExtra pillar
kableExtra pkgconfig
kableExtra askpass
kableExtra utf8
kableExtra ps
kableExtra fs
kableExtra rappdirs
kableExtra sys
renv utils


Unique list of implicit packages.

Code
# Exclude explicit and base R packages
unique_implicit <- implicit |> 
  select(implicit) |> 
  distinct() |> 
  anti_join(explicit, by = join_by(implicit == package)) |> 
  anti_join(base_all, by = join_by(implicit == package))

table_style(unique_implicit)
implicit
rprojroot
dplyr
hms
lifecycle
lubridate
magrittr
purrr
rlang
stringi
stringr
snakecase
tidyselect
tidyr
cli
generics
pillar
R6
vctrs
pkgconfig
timechange
cpp11
withr
fansi
utf8
broom
conflicted
dbplyr
dtplyr
forcats
ggplot2
googledrive
googlesheets4
haven
httr
modelr
ragg
readr
readxl
reprex
rstudioapi
rvest
xml2
backports
ellipsis
memoise
blob
DBI
data.table
gtable
isoband
MASS
mgcv
gargle
uuid
cellranger
curl
ids
rematch2
mime
openssl
systemfonts
textshaping
clipr
crayon
vroom
tzdb
progress
callr
fs
knitr
selectr
processx
rematch
rappdirs
evaluate
highr
xfun
yaml
cachem
nlme
Matrix
askpass
prettyunits
bslib
fontawesome
htmltools
jquerylib
tinytex
farver
labeling
munsell
RColorBrewer
viridisLite
bit64
sys
bit
base64enc
sass
fastmap
digest
lattice
colorspace
ps
future
globals
listenv
parallelly
codetools
later
rsconnect
Rcpp
packrat
httpuv
xtable
sourcetools
promises
commonmark
webshot
svglite


Excluding base R packages, there are 119 packages required by library packages explicitly loaded by scripts in this project.

7.5 Conclusion

The sum of explicit and implicit packages is 135. This compares with 134 packages listed in the renv.lock file.

This is close enough.

7.6 Diagnostics

{renv} diagnostics report.

Code
diagnostics()
Diagnostics Report [renv 1.0.0]
===============================

# Session Info ---------------------------------------------------------------
R version 4.3.1 (2023-06-16)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 22.04.2 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so;  LAPACK version 3.10.0

locale:
 [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
 [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
 [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
[10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   

time zone: UTC
tzcode source: system (glibc)

attached base packages:
[1] tools     stats     graphics  grDevices datasets  utils     methods  
[8] base     

other attached packages:
 [1] here_1.0.1       kableExtra_1.3.4 janitor_2.2.0    jsonlite_1.8.7  
 [5] lubridate_1.9.2  forcats_1.0.0    stringr_1.5.0    dplyr_1.1.2     
 [9] purrr_1.0.1      readr_2.1.4      tidyr_1.3.0      tibble_3.2.1    
[13] ggplot2_3.4.2    tidyverse_2.0.0  renv_1.0.0      

loaded via a namespace (and not attached):
 [1] utf8_1.2.3        generics_0.1.3    xml2_1.3.5        stringi_1.7.12   
 [5] hms_1.1.3         digest_0.6.33     magrittr_2.0.3    evaluate_0.21    
 [9] grid_4.3.1        timechange_0.2.0  fastmap_1.1.1     rprojroot_2.0.3  
[13] httr_1.4.6        rvest_1.0.3       fansi_1.0.4       viridisLite_0.4.2
[17] scales_1.2.1      cli_3.6.1         rlang_1.1.1       munsell_0.5.0    
[21] withr_2.5.0       yaml_2.3.7        tzdb_0.4.0        colorspace_2.1-0 
[25] webshot_0.5.5     vctrs_0.6.3       R6_2.5.1          lifecycle_1.0.3  
[29] snakecase_0.11.0  pkgconfig_2.0.3   pillar_1.9.0      gtable_0.3.3     
[33] glue_1.6.2        systemfonts_1.0.4 highr_0.10        xfun_0.39        
[37] tidyselect_1.2.0  rstudioapi_0.15.0 knitr_1.43        htmltools_0.5.5  
[41] rmarkdown_2.23    svglite_2.1.1     compiler_4.3.1   

# Project --------------------------------------------------------------------
Project path: "~/work/community-knowledge-profiles/community-knowledge-profiles"

# Status ---------------------------------------------------------------------
No issues found -- the project is in a consistent state.

# Packages -------------------------------------------------------------------
               Library Source Lockfile Source Path Dependency
DBI              1.1.3   CRAN    1.1.3   CRAN  [1]   indirect
KernSmooth     2.23-21   CRAN     <NA>   <NA>  [2]       <NA>
MASS            7.3-60   CRAN   7.3-60   CRAN  [2]   indirect
Matrix           1.5-4   CRAN    1.5-4   CRAN  [1]   indirect
R6               2.5.1   CRAN    2.5.1   CRAN  [1]   indirect
RColorBrewer     1.1-3   CRAN    1.1-3   CRAN  [1]   indirect
Rcpp            1.0.11   CRAN   1.0.11   CRAN  [1]   indirect
askpass            1.1   CRAN      1.1   CRAN  [1]   indirect
backports        1.4.1   CRAN    1.4.1   CRAN  [1]   indirect
base64enc        0.1-3   CRAN    0.1-3   CRAN  [1]   indirect
bit              4.0.5   CRAN    4.0.5   CRAN  [1]   indirect
bit64            4.0.5   CRAN    4.0.5   CRAN  [1]   indirect
blob             1.2.4   CRAN    1.2.4   CRAN  [1]   indirect
boot          1.3-28.1   CRAN     <NA>   <NA>  [2]       <NA>
broom            1.0.5   CRAN    1.0.5   CRAN  [1]   indirect
bslib            0.5.0   CRAN    0.5.0   CRAN  [1]   indirect
cachem           1.0.8   CRAN    1.0.8   CRAN  [1]   indirect
callr            3.7.3   CRAN    3.7.3   CRAN  [1]   indirect
cellranger       1.1.0   CRAN    1.1.0   CRAN  [1]   indirect
class           7.3-22   CRAN     <NA>   <NA>  [2]       <NA>
cli              3.6.1   CRAN    3.6.1   CRAN  [1]   indirect
clipr            0.8.0   CRAN    0.8.0   CRAN  [1]   indirect
cluster          2.1.4   CRAN     <NA>   <NA>  [2]       <NA>
codetools       0.2-19   CRAN   0.2-19   CRAN  [2]   indirect
colorspace       2.1-0   CRAN    2.1-0   CRAN  [1]   indirect
commonmark       1.9.0   CRAN    1.9.0   CRAN  [1]   indirect
compiler          <NA>   <NA>     <NA>   <NA>  [2]   indirect
conflicted       1.2.0   CRAN    1.2.0   CRAN  [1]   indirect
cpp11            0.4.5   CRAN    0.4.5   CRAN  [1]   indirect
crayon           1.5.2   CRAN    1.5.2   CRAN  [1]   indirect
curl             5.0.1   CRAN    5.0.1   CRAN  [1]   indirect
data.table      1.14.8   CRAN   1.14.8   CRAN  [1]   indirect
dbplyr           2.3.3   CRAN    2.3.3   CRAN  [1]   indirect
digest          0.6.33   CRAN   0.6.33   CRAN  [1]   indirect
dplyr            1.1.2   CRAN    1.1.2   CRAN  [1]   indirect
dtplyr           1.3.1   CRAN    1.3.1   CRAN  [1]   indirect
ellipsis         0.3.2   CRAN    0.3.2   CRAN  [1]   indirect
evaluate          0.21   CRAN     0.21   CRAN  [1]   indirect
fansi            1.0.4   CRAN    1.0.4   CRAN  [1]   indirect
farver           2.1.1   CRAN    2.1.1   CRAN  [1]   indirect
fastmap          1.1.1   CRAN    1.1.1   CRAN  [1]   indirect
fontawesome      0.5.1   CRAN    0.5.1   CRAN  [1]   indirect
forcats          1.0.0   CRAN    1.0.0   CRAN  [1]   indirect
foreign         0.8-84   CRAN     <NA>   <NA>  [2]       <NA>
fs               1.6.2   CRAN    1.6.2   CRAN  [1]   indirect
furrr            0.3.1   CRAN    0.3.1   CRAN  [1]     direct
future          1.33.0   CRAN   1.33.0   CRAN  [1]   indirect
gargle           1.5.2   CRAN    1.5.2   CRAN  [1]   indirect
generics         0.1.3   CRAN    0.1.3   CRAN  [1]   indirect
ggplot2          3.4.2   CRAN    3.4.2   CRAN  [1]   indirect
globals         0.16.2   CRAN   0.16.2   CRAN  [1]   indirect
glue             1.6.2   CRAN    1.6.2   CRAN  [1]     direct
googledrive      2.1.1   CRAN    2.1.1   CRAN  [1]   indirect
googlesheets4    1.1.1   CRAN    1.1.1   CRAN  [1]   indirect
grDevices         <NA>   <NA>     <NA>   <NA>  [2]   indirect
graphics          <NA>   <NA>     <NA>   <NA>  [2]   indirect
grid              <NA>   <NA>     <NA>   <NA>  [2]   indirect
gtable           0.3.3   CRAN    0.3.3   CRAN  [1]   indirect
haven            2.5.3   CRAN    2.5.3   CRAN  [1]   indirect
here             1.0.1   CRAN    1.0.1   CRAN  [1]     direct
highr             0.10   CRAN     0.10   CRAN  [1]   indirect
hms              1.1.3   CRAN    1.1.3   CRAN  [1]   indirect
htmltools        0.5.5   CRAN    0.5.5   CRAN  [1]   indirect
httpuv          1.6.11   CRAN   1.6.11   CRAN  [1]   indirect
httr             1.4.6   CRAN    1.4.6   CRAN  [1]   indirect
httr2            0.2.3   CRAN    0.2.3   CRAN  [1]     direct
ids              1.0.1   CRAN    1.0.1   CRAN  [1]   indirect
isoband          0.2.7   CRAN    0.2.7   CRAN  [1]   indirect
janitor          2.2.0   CRAN    2.2.0   CRAN  [1]     direct
jquerylib        0.1.4   CRAN    0.1.4   CRAN  [1]   indirect
jsonlite         1.8.7   CRAN    1.8.7   CRAN  [1]     direct
kableExtra       1.3.4   CRAN    1.3.4   CRAN  [1]     direct
knitr             1.43   CRAN     1.43   CRAN  [1]   indirect
labeling         0.4.2   CRAN    0.4.2   CRAN  [1]   indirect
later            1.3.1   CRAN    1.3.1   CRAN  [1]   indirect
lattice         0.21-8   CRAN   0.21-8   CRAN  [2]   indirect
lifecycle        1.0.3   CRAN    1.0.3   CRAN  [1]   indirect
listenv          0.9.0   CRAN    0.9.0   CRAN  [1]   indirect
lubridate        1.9.2   CRAN    1.9.2   CRAN  [1]   indirect
magrittr         2.0.3   CRAN    2.0.3   CRAN  [1]   indirect
memoise          2.0.1   CRAN    2.0.1   CRAN  [1]   indirect
methods           <NA>   <NA>     <NA>   <NA>  [2]   indirect
mgcv            1.8-42   CRAN   1.8-42   CRAN  [2]   indirect
mime              0.12   CRAN     0.12   CRAN  [1]   indirect
modelr          0.1.11   CRAN   0.1.11   CRAN  [1]   indirect
munsell          0.5.0   CRAN    0.5.0   CRAN  [1]   indirect
nlme           3.1-162   CRAN  3.1-162   CRAN  [2]   indirect
nnet            7.3-19   CRAN     <NA>   <NA>  [2]       <NA>
onsr             1.0.1   CRAN    1.0.1   CRAN  [1]     direct
openssl          2.1.0   CRAN    2.1.0   CRAN  [1]   indirect
packrat          0.9.1   CRAN    0.9.1   CRAN  [1]   indirect
parallel          <NA>   <NA>     <NA>   <NA>  [2]   indirect
parallelly      1.36.0   CRAN   1.36.0   CRAN  [1]   indirect
pillar           1.9.0   CRAN    1.9.0   CRAN  [1]   indirect
pkgconfig        2.0.3   CRAN    2.0.3   CRAN  [1]   indirect
prettyunits      1.1.1   CRAN    1.1.1   CRAN  [1]   indirect
processx         3.8.2   CRAN    3.8.2   CRAN  [1]   indirect
progress         1.2.2   CRAN    1.2.2   CRAN  [1]   indirect
promises       1.2.0.1   CRAN  1.2.0.1   CRAN  [1]   indirect
ps               1.7.5   CRAN    1.7.5   CRAN  [1]   indirect
purrr            1.0.1   CRAN    1.0.1   CRAN  [1]   indirect
quarto             1.2   CRAN      1.2   CRAN  [1]     direct
ragg             1.2.5   CRAN    1.2.5   CRAN  [1]   indirect
rappdirs         0.3.3   CRAN    0.3.3   CRAN  [1]   indirect
readr            2.1.4   CRAN    2.1.4   CRAN  [1]   indirect
readxl           1.4.3   CRAN    1.4.3   CRAN  [1]   indirect
rematch          1.0.1   CRAN    1.0.1   CRAN  [1]   indirect
rematch2         2.1.2   CRAN    2.1.2   CRAN  [1]   indirect
renv             1.0.0   CRAN    1.0.0   CRAN  [1]     direct
reprex           2.0.2   CRAN    2.0.2   CRAN  [1]   indirect
rlang            1.1.1   CRAN    1.1.1   CRAN  [1]   indirect
rmarkdown         2.23   CRAN     2.23   CRAN  [1]     direct
rpart           4.1.19   CRAN     <NA>   <NA>  [2]       <NA>
rprojroot        2.0.3   CRAN    2.0.3   CRAN  [1]   indirect
rsconnect        1.0.1   CRAN    1.0.1   CRAN  [1]   indirect
rstudioapi      0.15.0   CRAN   0.15.0   CRAN  [1]   indirect
rvest            1.0.3   CRAN    1.0.3   CRAN  [1]   indirect
sass             0.4.7   CRAN    0.4.7   CRAN  [1]   indirect
scales           1.2.1   CRAN    1.2.1   CRAN  [1]     direct
selectr          0.4-2   CRAN    0.4-2   CRAN  [1]   indirect
shiny          1.7.4.1   CRAN  1.7.4.1   CRAN  [1]     direct
snakecase       0.11.0   CRAN   0.11.0   CRAN  [1]   indirect
sourcetools    0.1.7-1   CRAN  0.1.7-1   CRAN  [1]   indirect
spatial         7.3-16   CRAN     <NA>   <NA>  [2]       <NA>
splines           <NA>   <NA>     <NA>   <NA>  [2]   indirect
stats             <NA>   <NA>     <NA>   <NA>  [2]   indirect
stringi         1.7.12   CRAN   1.7.12   CRAN  [1]   indirect
stringr          1.5.0   CRAN    1.5.0   CRAN  [1]   indirect
survival         3.5-5   CRAN     <NA>   <NA>  [2]       <NA>
svglite          2.1.1   CRAN    2.1.1   CRAN  [1]   indirect
sys              3.4.2   CRAN    3.4.2   CRAN  [1]   indirect
systemfonts      1.0.4   CRAN    1.0.4   CRAN  [1]   indirect
textshaping      0.3.6   CRAN    0.3.6   CRAN  [1]   indirect
tibble           3.2.1   CRAN    3.2.1   CRAN  [1]     direct
tidyr            1.3.0   CRAN    1.3.0   CRAN  [1]   indirect
tidyselect       1.2.0   CRAN    1.2.0   CRAN  [1]   indirect
tidyverse        2.0.0   CRAN    2.0.0   CRAN  [1]     direct
timechange       0.2.0   CRAN    0.2.0   CRAN  [1]   indirect
tinytex           0.45   CRAN     0.45   CRAN  [1]   indirect
tools             <NA>   <NA>     <NA>   <NA>  [2]     direct
tzdb             0.4.0   CRAN    0.4.0   CRAN  [1]   indirect
utf8             1.2.3   CRAN    1.2.3   CRAN  [1]   indirect
utils             <NA>   <NA>     <NA>   <NA>  [2]   indirect
uuid             1.1-0   CRAN    1.1-0   CRAN  [1]   indirect
vctrs            0.6.3   CRAN    0.6.3   CRAN  [1]   indirect
viridisLite      0.4.2   CRAN    0.4.2   CRAN  [1]   indirect
vroom            1.6.3   CRAN    1.6.3   CRAN  [1]   indirect
webshot          0.5.5   CRAN    0.5.5   CRAN  [1]   indirect
withr            2.5.0   CRAN    2.5.0   CRAN  [1]   indirect
xfun              0.39   CRAN     0.39   CRAN  [1]   indirect
xml2             1.3.5   CRAN    1.3.5   CRAN  [1]   indirect
xtable           1.8-4   CRAN    1.8-4   CRAN  [1]   indirect
yaml             2.3.7   CRAN    2.3.7   CRAN  [1]   indirect

[1]: /home/runner/.cache/R/renv/library/community-knowledge-profiles-06c27bed/R-4.3/x86_64-pc-linux-gnu
[2]: /home/runner/.cache/R/renv/sandbox/R-4.3/x86_64-pc-linux-gnu/5cd49154                             

# ABI ------------------------------------------------------------------------
- No ABI conflicts were detected in the set of installed packages.

# User Profile ---------------------------------------------------------------
[1] Source  Package Require Version Dev    
<0 rows> (or 0-length row.names)

# Settings -------------------------------------------------------------------
List of 13
 $ bioconductor.version     : NULL
 $ external.libraries       : chr(0) 
 $ ignored.packages         : chr(0) 
 $ package.dependency.fields: chr [1:3] "Imports" "Depends" "LinkingTo"
 $ ppm.enabled              : NULL
 $ ppm.ignored.urls         : NULL
 $ r.version                : NULL
 $ snapshot.type            : chr "implicit"
 $ use.cache                : logi TRUE
 $ vcs.ignore.cellar        : logi TRUE
 $ vcs.ignore.library       : logi TRUE
 $ vcs.ignore.local         : logi TRUE
 $ vcs.manage.ignores       : logi TRUE

# Options --------------------------------------------------------------------
List of 8
 $ defaultPackages                     : chr [1:6] "datasets" "utils" "grDevices" "graphics" ...
 $ download.file.method                : NULL
 $ download.file.extra                 : NULL
 $ install.packages.compile.from.source: NULL
 $ pkgType                             : chr "source"
 $ repos                               : Named chr "https://cloud.r-project.org"
  ..- attr(*, "names")= chr "CRAN"
 $ renv.consent                        : logi TRUE
 $ renv.verbose                        : logi TRUE

# Environment Variables ------------------------------------------------------
HOME                        = /home/runner
LANG                        = C.UTF-8
MAKE                        = make
R_LIBS                      = <NA>
R_LIBS_SITE                 = /opt/R/4.3.1/lib/R/site-library
R_LIBS_USER                 = /home/runner/.cache/R/renv/library/community-knowledge-profiles-06c27bed/R-4.3/x86_64-pc-linux-gnu:/home/runner/.cache/R/renv/sandbox/R-4.3/x86_64-pc-linux-gnu/5cd49154
RENV_DEFAULT_R_ENVIRON      = <NA>
RENV_DEFAULT_R_ENVIRON_USER = <NA>
RENV_DEFAULT_R_LIBS         = <NA>
RENV_DEFAULT_R_LIBS_SITE    = /opt/R/4.3.1/lib/R/site-library
RENV_DEFAULT_R_LIBS_USER    = /home/runner/work/_temp/Library
RENV_DEFAULT_R_PROFILE      = <NA>
RENV_DEFAULT_R_PROFILE_USER = <NA>
RENV_PATHS_ROOT             = /home/runner/work/_temp/renv
RENV_PROJECT                = /home/runner/work/community-knowledge-profiles/community-knowledge-profiles

# PATH -----------------------------------------------------------------------
- /home/runner/bin
- /home/runner/.local/bin
- /opt/pipx_bin
- /home/runner/.cargo/bin
- /home/runner/.config/composer/vendor/bin
- /usr/local/.ghcup/bin
- /home/runner/.dotnet/tools
- /snap/bin
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /sbin
- /bin
- /usr/games
- /usr/local/games
- /snap/bin

# Cache ----------------------------------------------------------------------
There are a total of 128 packages installed in the renv cache.
Cache path: "~/work/_temp/renv/cache/v5/R-4.3/x86_64-pc-linux-gnu"