knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
R CMD check
is a command line tool that checks R packages against a standard set of criteria. For a pull request to pass the check must not issue any notes, warnings or errors. Below is a list of common issues and how to resolve them.
If the R CMD check
workflow fails only on one or two R versions it can be helpful to reproduce the testing environment locally.
To reproduce a particular R version environment open the {admiral}
project in the corresponding R version, comment the line source("renv/activate.R")
in the .Rprofile
file, restart the R session and then run the following commands in the R console.
Sys.setenv(R_REMOTES_NO_ERRORS_FROM_WARNINGS = "true") if (!dir.exists(".library")) { dir.create(".library") } base_recommended_pkgs <- row.names(installed.packages(priority = "high")) for (pkg in base_recommended_pkgs) { path <- file.path(.Library, pkg) cmd <- sprintf("cp -r %s .library", path) system(cmd) } assign(".lib.loc", ".library", envir = environment(.libPaths)) r_version <- getRversion() if (grepl("^4.1", r_version)) { options(repos = "https://packagemanager.posit.co/cran/2021-05-03/") } else if (grepl("^4.2", r_version)) { options(repos = "https://packagemanager.posit.co/cran/2022-01-03/") } else if (grepl("^4.3", r_version)) { options(repos = "https://packagemanager.posit.co/cran/2023-04-20/") } else { options(repos = "https://cran.rstudio.com") } if (!requireNamespace("remotes", quietly = TRUE)) { install.packages("remotes") } remotes::install_deps(dependencies = TRUE) remotes::install_github("pharmaverse/pharmaversesdtm", ref = "devel") remotes::install_github("pharmaverse/admiraldev", ref = "devel") rcmdcheck::rcmdcheck()
This will ensure that the exact package versions we use in the workflow are installed into the hidden folder .library
. That way your existing R packages are not overwritten.
> checking package dependencies ... ERROR Namespace dependency not required: 'pkg'
Add pkg
to the Imports
or Suggests
field in the DESCRIPTION
file. In general, dependencies should be listed in the Imports
field. However, if a package is only used inside vignettes or unit tests it should be listed in Suggests
because all {admiral}
functions would work without these "soft" dependencies being installed.
❯ checking R code for possible problems ... NOTE function_xyz: no visible binding for global variable 'some_var'
Add some_var
to the list of "global" variables in R/globals.R
.
❯ checking Rd \usage sections ... WARNING Undocumented arguments in documentation object 'function_xyz' 'some_param'
Add an @param some_param
section in the header of function_xyz()
and run devtools::document()
afterwards.
❯ checking for code/documentation mismatches ... WARNING Codoc mismatches from documentation object 'function_xyz': ... Argument names in code not in docs: new_param_name Argument names in docs not in code: old_param_name Mismatches in argument names: Position: 6 Code: new_param_name Docs: old_param_name
The name of a parameter has been changed in the function code but not yet in the header. Change @param old_param_name
to @param new_param_name
and run devtools::document()
.
For further reading we recommend the R-pkg manual r-cmd chapter
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.