| Title: | R Repositories Data |
|---|---|
| Description: | Retrieve metadata about packages from repositories to explore package dependencies, links between help pages, aliases, package availability on a given date, and other repository-dependent outcome. In addition, it provides access to information about the processes at CRAN. This metadata can be used to help package maintainers and users navigate changes to dependencies and with reproducibility. |
| Authors: | Lluís Revilla Sancho [aut, cre, cph] (ORCID: <https://orcid.org/0000-0001-9747-2570>) |
| Maintainer: | Lluís Revilla Sancho <[email protected]> |
| License: | GPL (>= 3) |
| Version: | 0.2.2 |
| Built: | 2026-06-20 19:23:32 UTC |
| Source: | https://github.com/cran/repo.data |
Retrieve links of repository packages to other packages' documentation.
alias(packages = NULL)alias(packages = NULL)
packages |
A vector with packages or |
A data.frame with three columns: Package, Source and Target. NA if not able to collect the data from the repository.
For completeness it also provides the alias of R packages themselves.
Other alias:
base_alias(),
cran_alias()
oldrepos <- getOption("repos") setRepositories(ind = c(1, 2), addURLs = "https://cran.r-project.org") # show repositories getOption("repos") head(alias(c("ggplot2", "BiocCheck"))) # Clean up options(repos = oldrepos)oldrepos <- getOption("repos") setRepositories(ind = c(1, 2), addURLs = "https://cran.r-project.org") # show repositories getOption("repos") head(alias(c("ggplot2", "BiocCheck"))) # Clean up options(repos = oldrepos)
Retrieve alias available on R.
base_alias(packages = NULL)base_alias(packages = NULL)
packages |
A vector with packages or |
A data.frame with three columns: Package, Source and Target.
NA if not able to collect the data from CRAN.
The raw source of the data is: base_aliases_db().
Other alias:
alias(),
cran_alias()
ba <- base_alias() head(ba)ba <- base_alias() head(ba)
Some help pages have links to and from but they are closed networks.
base_help_cliques()base_help_cliques()
Requires igraph
Return a data.frame of help pages not connected to the network of help pages.
NA if not able to collect the data from CRAN.
Other functions related to BASE help pages:
base_help_pages_not_linked(),
base_help_pages_wo_links()
if (requireNamespace("igraph", quietly = TRUE)) { base_help_cliques() }if (requireNamespace("igraph", quietly = TRUE)) { base_help_cliques() }
Help pages without links to other help pages. This makes harder to navigate to related help pages.
base_help_pages_not_linked()base_help_pages_not_linked()
A data.frame with two columns: Package and Source.
NA if not able to collect the data from CRAN.
Other functions related to BASE help pages:
base_help_cliques(),
base_help_pages_wo_links()
bhnl <- base_help_pages_not_linked() head(bhnl)bhnl <- base_help_pages_not_linked() head(bhnl)
Help pages without links from other help pages. This makes harder to find them.
base_help_pages_wo_links()base_help_pages_wo_links()
A data.frame with two columns: Package and Source
Other functions related to BASE help pages:
base_help_cliques(),
base_help_pages_not_linked()
bhwl <- base_help_pages_wo_links() head(bhwl)bhwl <- base_help_pages_wo_links() head(bhwl)
Retrieve links on R documentation files.
base_links(packages = NULL)base_links(packages = NULL)
packages |
A vector with packages or |
A data.frame with the links on R's files.
It has 4 columns: Package, Anchor, Target and Source.
NA if not able to collect the data from CRAN.
The raw source of the data is: base_rdxrefs_db().
Other links from R:
base_pages_links(),
base_pkges_links(),
base_targets_links()
bl <- base_links() head(bl)bl <- base_links() head(bl)
Explore the relationship between base R packages and other help pages. If the target help page is ambiguous it is omitted.
base_pages_links(packages = NULL)base_pages_links(packages = NULL)
packages |
A vector with packages or |
A data.frame with 6 columns: from_pkg, from_Rd, to_pkg, to_Rd, n (Number of links).
NA if not able to collect the data from CRAN.
Other links from R:
base_links(),
base_pkges_links(),
base_targets_links()
bpl <- base_pages_links() head(bpl)bpl <- base_pages_links() head(bpl)
Explore the relationship between base R packages and other packages. If the target package is ambiguous it is omitted.
base_pkges_links(packages = NULL)base_pkges_links(packages = NULL)
packages |
A vector with packages or |
A data.frame with 6 columns: from_pkg, to_pkg, n (Number of links).
NA if not able to collect the data from CRAN.
Other links from R:
base_links(),
base_pages_links(),
base_targets_links()
bpkl <- base_pkges_links() head(bpkl)bpkl <- base_pkges_links() head(bpkl)
Explore the relationship between base R packages and other help pages by the target they use.
base_targets_links(packages = NULL)base_targets_links(packages = NULL)
packages |
A vector with packages or |
A data.frame with 6 columns: from_pkg, from_Rd, to_pkg, to_target, to_Rd, n (Number of links).
NA if not able to collect the data from CRAN.
Other links from R:
base_links(),
base_pages_links(),
base_pkges_links()
btl <- base_targets_links() head(btl)btl <- base_targets_links() head(btl)
Checks on the 4 Bioconductor repositories which packages depend on a archived package.
bioc_cran_archived(which = "strong")bioc_cran_archived(which = "strong")
which |
a character vector listing the types of
dependencies, a subset of
|
A data.frame with the name of the Bioconductor packages
depending on archived packages (on Archived column) and the
number of missing packages (n).
NA if not able to collect the data.
For CRAN's data source: tools::CRAN_package_db()
bca <- bioc_cran_archived() head(bca)bca <- bioc_cran_archived() head(bca)
Clean cache to download repository data again.
clean_cache()clean_cache()
Cleans the package's environment used for caching the data.
Returns NULL.
clean_cache()clean_cache()
CRAN tracks movements of packages and the actions used (for example to report the number of manual actions taken by the volunteers).
cran_actions(packages = NULL, silent = FALSE)cran_actions(packages = NULL, silent = FALSE)
packages |
A vector with packages or |
silent |
A logical value to issue warnings about the data or not. |
There are three possible actions with packages source code: publish, archive and remove.
Publish: Add it to CRAN's PACKAGES file, users can install that version.
Archive: Removed from CRAN's repository PACKAGES file so users can't access the package with available.packages().
Remains on CRAN archive: https://cran.r-project.org/src/contrib/Archive/.
Remove: Removed from CRAN's archive.
A data.frame with Date, Time, User, Action, Package and Version columns.
NA if not able to collect the data from CRAN.
Other meta info from CRAN:
cran_alias(),
cran_archive(),
cran_comments(),
cran_doom(),
cran_links(),
links()
ca <- cran_actions(silent = TRUE) head(ca)ca <- cran_actions(silent = TRUE) head(ca)
Retrieve alias available on CRAN.
cran_alias(packages = NULL)cran_alias(packages = NULL)
packages |
A vector with packages or |
A data.frame with three columns: Package, Source and Target.
NA if not able to collect the data from CRAN.
The raw source of the data is: CRAN_aliases_db().
Other alias:
alias(),
base_alias()
Other meta info from CRAN:
cran_actions(),
cran_archive(),
cran_comments(),
cran_doom(),
cran_links(),
links()
ca <- cran_alias("BWStest") head(ca)ca <- cran_alias("BWStest") head(ca)
Retrieve the archive and the current database.
cran_archive(packages = NULL)cran_archive(packages = NULL)
packages |
A vector with packages or |
Some packages would get an NA in Version, if package_version() were to be
used with strict = FALSE.
Packages might have been on CRAN but could have been removed and won't show up.
Depending on the data requested and packages currently on CRAN, you might get
a warning regarding a package being both archived and current.
A data.frame with 6 columns: Package, Date (of publication), Version,
User, size and status (archived or current).
It is sorted by package name and date.
NA if not able to collect the data from CRAN.
The raw source of the data is: CRAN_archive_db(),
CRAN_current_db().
For some dates and comments about archiving packages: cran_comments().
Other meta info from CRAN:
cran_actions(),
cran_alias(),
cran_comments(),
cran_doom(),
cran_links(),
links()
ap <- available.packages() if (NROW(ap)) { a_package <- rownames(ap)[startsWith(rownames(ap), "A")][2] ca <- cran_archive(a_package) head(ca) }ap <- available.packages() if (NROW(ap)) { a_package <- rownames(ap)[startsWith(rownames(ap), "A")][2] ca <- cran_archive(a_package) head(ca) }
CRAN volunteers document since ~2009 why they archive packages. This function retrieves the data and prepares it for analysis, classifying the actions taken by the team per package and date.
cran_comments(packages = NULL)cran_comments(packages = NULL)
packages |
A vector with packages or |
The comments are slightly edited: multiple comments for the same action are joined together so that they can be displayed on a single line. Actions are inferred from 7 keywords: archived, orphaned, removed, renamed, replaced, unarchived, unorphaned.
A data.frame with four columns: package, comment, date and action.
NA if not able to collect the data from CRAN.
There can be room for improvement: some comments describe two actions, please let me know if you think this can be improved. Other actions can be described on multiple comments/lines or out of order. Compare with the original file in case of doubts.
Original file: https://cran.r-project.org/src/contrib/PACKAGES.in
Other meta info from CRAN:
cran_actions(),
cran_alias(),
cran_archive(),
cran_doom(),
cran_links(),
links()
cc <- cran_comments() head(cc)cc <- cran_comments() head(cc)
Check which CRAN dates are possible for a given packages and versions.
cran_date(versions) cran_session(session = sessionInfo())cran_date(versions) cran_session(session = sessionInfo())
versions |
A data.frame with the packages names and versions |
session |
Session information. |
Last installation date from CRAN.
Other utilities:
cran_doom(),
cran_snapshot(),
duplicated_alias(),
package_date(),
package_repos(),
repos_dependencies(),
update_dependencies()
# ip <- installed.packages() ip <- data.frame(Package = c("A3", "AER"), Version = c("1.0.0", "1.2-15")) cran_date(ip) cran_session()# ip <- installed.packages() ip <- data.frame(Package = c("A3", "AER"), Version = c("1.0.0", "1.2-15")) cran_date(ip) cran_session()
Given the deadlines by the CRAN volunteers packages can be archived which can trigger some other packages to be archived. This code calculates how much time the chain reaction will go on if maintainer don't fix/update the packages.
cran_doom(which = "strong", bioc = FALSE)cran_doom(which = "strong", bioc = FALSE)
which |
a character vector listing the types of
dependencies, a subset of
|
bioc |
Logical value if Bioconductor packages should be provided, (Requires internet connection). |
Packages on Suggested: field should
A list with multiple elements:
time_till_last: Time till last package is affected.
last_archived: the date of the last package that would be affected.
npackages: Numeric vector with the number of packages used.
details: A data.frame with information for each individual package:
Name, date affected, affected directly, repository, times it is affected
(by archival causing issues.)
NA if not able to collect the data from CRAN.
Original code from: https://github.com/schochastics/cran-doomsday/blob/main/index.qmd
The raw source of the data is: tools::CRAN_package_db()
Other utilities:
cran_date(),
cran_snapshot(),
duplicated_alias(),
package_date(),
package_repos(),
repos_dependencies(),
update_dependencies()
Other meta info from CRAN:
cran_actions(),
cran_alias(),
cran_archive(),
cran_comments(),
cran_links(),
links()
cd <- cran_doom() if (length(cd) > 1L) head(cd$details)cd <- cran_doom() if (length(cd) > 1L) head(cd$details)
Some help pages have links to other pages and they might be linked from others but they are closed network: there is no link that leads to different help pages. Each group of linked help pages is a clique.
cran_help_cliques(packages = NULL)cran_help_cliques(packages = NULL)
packages |
A vector with packages or |
The first clique is the biggest one. You might want to check if others cliques can be connected to this one.
Requires igraph.
Return a data.frame of help pages not connected to the network of help pages.
Or NULL if nothing are found.
NA if not able to collect the data from CRAN.
Other functions related to CRAN help pages:
cran_help_pages_not_linked(),
cran_help_pages_wo_links()
chc <- cran_help_cliques("BaseSet") if (!is.null(dim(chc))) { table(chc$clique) chc[chc$clique != 1L, ] }chc <- cran_help_cliques("BaseSet") if (!is.null(dim(chc))) { table(chc$clique) chc[chc$clique != 1L, ] }
On WRE section "2.5 Cross-references" explains that packages shouldn't link to help pages outside the dependency.
cran_help_pages_links_wo_deps(packages = NULL)cran_help_pages_links_wo_deps(packages = NULL)
packages |
A vector with packages or |
A data.frame of help pages and links.
NA if not able to collect the data from CRAN.
https://cran.r-project.org/doc/manuals/r-devel/R-exts.html#Cross_002dreferences
evmix <- cran_help_pages_links_wo_deps("evmix")evmix <- cran_help_pages_links_wo_deps("evmix")
Help pages without links to other help pages. This makes harder to navigate to related help pages.
cran_help_pages_not_linked(packages = NULL)cran_help_pages_not_linked(packages = NULL)
packages |
A vector with packages or |
A data.frame with two columns: Package and Source
NA if not able to collect the data from CRAN.
Other functions related to CRAN help pages:
cran_help_cliques(),
cran_help_pages_wo_links()
ap <- available.packages() if (NROW(ap)) { a_package <- rownames(ap)[startsWith(rownames(ap), "A")][1] chnl <- cran_help_pages_not_linked(a_package) head(chnl) }ap <- available.packages() if (NROW(ap)) { a_package <- rownames(ap)[startsWith(rownames(ap), "A")][1] chnl <- cran_help_pages_not_linked(a_package) head(chnl) }
Help pages without links from other help pages. This makes harder to find them.
cran_help_pages_wo_links(packages = NULL)cran_help_pages_wo_links(packages = NULL)
packages |
A vector with packages or |
A data.frame with two columns: Package and Source
NA if not able to collect the data from CRAN.
Other functions related to CRAN help pages:
cran_help_cliques(),
cran_help_pages_not_linked()
ap <- available.packages() if (NROW(ap)) { a_package <- rownames(ap)[startsWith(rownames(ap), "a")][1] chwl <- cran_help_pages_wo_links(a_package) head(chwl) }ap <- available.packages() if (NROW(ap)) { a_package <- rownames(ap)[startsWith(rownames(ap), "a")][1] chwl <- cran_help_pages_wo_links(a_package) head(chwl) }
Reports the notifications sent to package maintainers with the hour it was sent and the deadline used.
cran_issues()cran_issues()
A data.frame with 8 columns:
Year.number: Id of the issue.
Package name.
POSIXct object when the issue was sent.
CRAN member that sent that notification.
Date by which the issue should be fixed.
Reason of the issue.
Some classification of the issue.
Unstructured text with some information.
ci <- cran_issues() if (!is.null(dim(ci))) { head(ci) }ci <- cran_issues() if (!is.null(dim(ci))) { head(ci) }
Retrieve links on CRAN packages' R documentation files.
cran_links(packages = NULL)cran_links(packages = NULL)
packages |
A vector with packages or |
A data.frame with the links on CRAN's packages.
It has 4 columns: Package, Anchor, Target and Source.
NA if not able to collect the data from CRAN.
The raw source of the data is: CRAN_rdxrefs_db().
Other links from CRAN:
cran_pages_links(),
cran_pkges_links(),
cran_targets_links(),
links()
Other meta info from CRAN:
cran_actions(),
cran_alias(),
cran_archive(),
cran_comments(),
cran_doom(),
links()
cl <- cran_links("CytoSimplex") head(cl)cl <- cran_links("CytoSimplex") head(cl)
Make more accessible information about maintainers. Extracts and makes comparable some dates. It also provides the user name used and cleans the names of the maintainer of extra quotes.
cran_maintainers()cran_maintainers()
User is what the machine building the package reported. This might indicate some collaboration, repackaging or simply nothing as it can be hidden/modified. The name, email and user might help identify similar named people (or confuse between maintainers)
A data.frame with one row per package and 11 columns.
The package name, Maintainer field, user maintainer manual date, packaged
date, published date, name of maintainer used, email used, direction and domain.
NA if not able to collect the data from CRAN.
The raw source of the data is: CRAN_authors_db()
maintainers <- cran_maintainers() head(maintainers)maintainers <- cran_maintainers() head(maintainers)
Explore the relationship between CRAN packages and other help pages. If the target help page is ambiguous it is omitted.
cran_pages_links(packages = NULL)cran_pages_links(packages = NULL)
packages |
A vector with packages or |
A data.frame with 6 columns: from_pkg, from_Rd, to_pkg, to_Rd, n (Number of links).
Other links from CRAN:
cran_links(),
cran_pkges_links(),
cran_targets_links(),
links()
cpl <- cran_pages_links("Matrix") head(cpl)cpl <- cran_pages_links("Matrix") head(cpl)
Explore the relationship between CRAN packages and other packages. If the target package is ambiguous it is omitted.
cran_pkges_links(packages = NULL)cran_pkges_links(packages = NULL)
packages |
A vector with packages or |
A data.frame with 6 columns: from_pkg, to_pkg, n (Number of links).
NA if not able to collect the data from CRAN.
Other links from CRAN:
cran_links(),
cran_pages_links(),
cran_targets_links(),
links()
cpkl <- cran_pkges_links() head(cpkl)cpkl <- cran_pkges_links() head(cpkl)
Given the available information which packages were on CRAN on a given date?
cran_snapshot(date)cran_snapshot(date)
date |
The date you want to check. |
The data.frame with the packages and versions at a given date.
NA if not able to collect the data from CRAN.
Due to missing of CRAN comments some packages are not annotated when were they archived and more packages than present might be returned for any given date.
Other utilities:
cran_date(),
cran_doom(),
duplicated_alias(),
package_date(),
package_repos(),
repos_dependencies(),
update_dependencies()
cs <- cran_snapshot(Sys.Date() -2 ) head(cs)cs <- cran_snapshot(Sys.Date() -2 ) head(cs)
Explore the relationship between CRAN packages and other help pages by the target they use.
cran_targets_links(packages = NULL)cran_targets_links(packages = NULL)
packages |
A vector with packages or |
A data.frame with 6 columns: from_pkg, from_Rd, to_pkg, to_target, to_Rd, n (Number of links).
Other links from CRAN:
cran_links(),
cran_pages_links(),
cran_pkges_links(),
links()
ctl <- cran_targets_links("BaseSet") head(ctl)ctl <- cran_targets_links("BaseSet") head(ctl)
Install a package from CRAN of a specific version.
cran_version(package, version, ...)cran_version(package, version, ...)
package |
Name of the package present on CRAN archive. |
version |
The version number. |
... |
Other arguments passed to install.packages. |
Uses CRAN specific API
<cran.r-project.org/package=%s&version=%s>
to install a package. As this is an archived copy we only use source version.
Same as install.packages().
CRAN pages.
## Not run: cran_version("repo.data", "0.1.5", lib = tempdir()) ## End(Not run)## Not run: cran_version("repo.data", "0.1.5", lib = tempdir()) ## End(Not run)
Report duplicated alias
duplicated_alias(alias)duplicated_alias(alias)
alias |
The output of |
A sorted data.frame with the Target, Package and Source of the duplicate alias.
Other utilities:
cran_date(),
cran_doom(),
cran_snapshot(),
package_date(),
package_repos(),
repos_dependencies(),
update_dependencies()
# Checking the overlap between to seemingly unrelated packages: alias <- alias(c("fect", "gsynth")) if (length(alias)) { dup_alias <- duplicated_alias(alias) head(dup_alias) }# Checking the overlap between to seemingly unrelated packages: alias <- alias(c("fect", "gsynth")) if (length(alias)) { dup_alias <- duplicated_alias(alias) head(dup_alias) }
Retrieve links of repository packages to other packages' documentation.
links(packages = NULL)links(packages = NULL)
packages |
A vector with packages or |
A data.frame with the links on packages. It has 4 columns: Package, Anchor, Target and Source. NA if not able to collect the data from the repository.
Other links from CRAN:
cran_links(),
cran_pages_links(),
cran_pkges_links(),
cran_targets_links()
Other meta info from CRAN:
cran_actions(),
cran_alias(),
cran_archive(),
cran_comments(),
cran_doom(),
cran_links()
oldrepos <- getOption("repos") setRepositories(ind = c(1, 2), addURLs = "https://cran.r-project.org") head(links(c("ggplot2", "BiocCheck"))) # Clean up options(repos = oldrepos)oldrepos <- getOption("repos") setRepositories(ind = c(1, 2), addURLs = "https://cran.r-project.org") head(links(c("ggplot2", "BiocCheck"))) # Clean up options(repos = oldrepos)
Data from the R source code of OS specific man help pages.
This is to complement tools::base_aliases_db() which only provides links for Unix.
os_aliasos_alias
An object of class matrix (inherits from array) with 33 rows and 5 columns.
A matrix with 33 rows and 5 columns:
Package name
OS system where this applies
Name of the Rd file.
Path to the file.
Name of the Target
os_aliasos_alias
Search the DESCRIPTION file for the release dates of dependencies and return the earliest date according to CRAN's archive. This is the date at which the package could be installed.
package_date(packages = ".", which = "strong")package_date(packages = ".", which = "strong")
packages |
Path to the package folder and/or name of packages published. |
which |
a character vector listing the types of
dependencies, a subset of
|
Currently this function assumes that packages only use ">=" and not other operators. This might change on the future if other operators are more used.
A vector with the datetimes of the published package (or current
date if not published) and the datetime when the requirements were met.
NA if not able to collect the data from CRAN.
Other utilities:
cran_date(),
cran_doom(),
cran_snapshot(),
duplicated_alias(),
package_repos(),
repos_dependencies(),
update_dependencies()
package_date("ABACUS") package_date("paramtest") package_date("Seurat") # Dependencies on packages not on CRAN package_date("afmToolkit") # Dependency was removed from CRANpackage_date("ABACUS") package_date("paramtest") package_date("Seurat") # Dependencies on packages not on CRAN package_date("afmToolkit") # Dependency was removed from CRAN
Same as package_date() but using CRAN's actions instead of public archive.
package_date_actions(packages = ".", which = "strong")package_date_actions(packages = ".", which = "strong")
packages |
Name of the package on CRAN. It accepts also local path to packages source directories but then the function works as if the package is not released yet. |
which |
a character vector listing the types of
dependencies, a subset of
|
This provides information about when a package was removed or archived for a more accurate estimation.
A vector with the time when the package was publish and when were the dependencies available.
package_date_actions("afmToolkit")package_date_actions("afmToolkit")
Despite the description minimal requirements find which versions are required due to dependencies. Reports the minimal version for each package that would be installed now.
package_dependencies(packages = ".", which = "strong")package_dependencies(packages = ".", which = "strong")
packages |
Path to a folder with a DESCRIPTION file or package's names from a repository. If NULL will pick all packages and their dependencies available. |
which |
a character vector listing the types of
dependencies, a subset of
|
A data.frame with the Package, Type, Name, Op and Version required.
If only one package requires it it also show the name of the package.
NA if not able to collect the data from repositories.
It keeps the base packages too even if just knowing the R version required would be enough.
pd <- package_dependencies("ggeasy") head(pd)pd <- package_dependencies("ggeasy") head(pd)
Explore the relationships between packages and repositories.
package_repos(packages = NULL, repos = getOption("repos"), which = "all")package_repos(packages = NULL, repos = getOption("repos"), which = "all")
packages |
a character vector of package names. |
repos |
Repositories and their names are taken from |
which |
a character vector listing the types of
dependencies, a subset of
|
A data.frame with one line per package and at least one column per
repository. It also has a column for Other repositories (Additional_repositories,
or missing repositories), and the total number of dependencies and total
number of repositories used.
NA if not able to collect the data from repositories.
Other utilities:
cran_date(),
cran_doom(),
cran_snapshot(),
duplicated_alias(),
package_date(),
repos_dependencies(),
update_dependencies()
pr <- package_repos("experDesign") head(pr)pr <- package_repos("experDesign") head(pr)
Extract the packages dependencies, name of the dependency, operator and version
for each type and package of current repositories (getOptions("repos")).
repos_dependencies(packages = NULL, which = "all")repos_dependencies(packages = NULL, which = "all")
packages |
a character vector of package names. |
which |
a character vector listing the types of
dependencies, a subset of
|
A data.frame with 5 columns: the name of the dependency,
the operator (op), the version it depends the type of dependency and the package.
NA if not able to collect the data from CRAN.
Other utilities:
cran_date(),
cran_doom(),
cran_snapshot(),
duplicated_alias(),
package_date(),
package_repos(),
update_dependencies()
rd <- repos_dependencies("BaseSet") head(rd)rd <- repos_dependencies("BaseSet") head(rd)
Helper function to detect which package have a required version on the dependencies that could be upgraded.
update_dependencies(packages)update_dependencies(packages)
packages |
A character vector of packages names. |
Increasing this version requirements won't affect users as they already should have these versions installed as required by other dependencies.
The data.frame filtered with some relevant rows.
NA if not able to collect the data from repositories.
Other utilities:
cran_date(),
cran_doom(),
cran_snapshot(),
duplicated_alias(),
package_date(),
package_repos(),
repos_dependencies()
update_dependencies("arrow")update_dependencies("arrow")