Make a table that summarizes the results of the CRAN checks for a set of packages specified by a maintainer or by names.

  email = NULL,
  pkg = NULL,
  show = c("error", "fail", "warn", "note", "ok"),
  src = c("website", "crandb"),



email address for package maintainers (character vector)


package names (character vector)


columns of the data frame to show (all are shown by default)


if "website" the data is scrapped from the CRAN website, if "crandb" the data is downloaded from a RDS file hosted on the CRAN servers (which is used to generate the information found on the CRAN website).


additional arguments to control where the data from the check results are coming from and how they are downloaded from the CRAN servers (see Details section).


a data frame that tabulates the number of CRAN flavors that return errors, warnings, notes, or OK for the packages.


Given the email address of a package maintainer, and/or a vector of package names, returns a tibble that allows you to detect potential issues with your packages on CRAN.

Where does the data come from?

The data comes from the CRAN servers. They generate RDS files that contains information regarding the results of the checks for all the packages, and all the flavors. This data is then used to generate the web pages.

foghorn provides access to either of these data sources. If you choose src = "website" the data is scrapped from the CRAN website. If you only need to check a few packages, this is a good option. If you choose src = "crandb" the RDS files (about 20Mb) are downloaded first from the CRAN servers.

When choosing src = "crandb" you can also specify the following options:

  • dest a folder where to store the RDS files (tempdir() by default).

  • protocol either https (default) or http.

  • overwrite when FALSE (default), if the file exists in dest then it will not be downloaded again. When TRUE the file gets downloaded every time it's needed.

  • progress when TRUE (default), a bar will be displayed to show the download progress (requires the progress package).

  • ... additional arguments that will be passed to GET function to control how the file will be downloaded.

See also

Note that the tools package contains unexported functions that can be used to extract summary information from the check results. Specifically tools:::sumarize_CRAN_check_status is similar to show_cran_results.


if (curl::has_internet()) { cran_results(pkg="MASS") }
#> # A tibble: 1 x 7 #> package error fail warn note ok has_other_issues #> <chr> <int> <int> <int> <int> <int> <lgl> #> 1 MASS 0 0 0 0 12 FALSE