R: The fastverse

fastverse {fastverse} | R Documentation

## The fastverse

### Description

The fastverse is an extensible suite of R packages, developed independently by various people, that jointly contribute to the objectives of:

1. Speeding up R through heavy use of compiled code (C, C++, Fortran)

2. Enabling more complex statistical and data manipulation operations in R

3. Reducing the number of dependencies required for advanced computing in R

Inspired by the `tidyverse` package, the `fastverse` package is a flexible package loader and manager that allows users to put together their own 'verses' of packages and load them with `library(fastverse)`.

The `fastverse` installs 6 core packages (`data.table`, `collapse`, `matrixStats`, `kit`, `magrittr` and `fst`) that provide native C/C++ code of proven quality, work well together, and enable complex statistical computing and data manipulation - with only `Rcpp` as an additional dependency. The package also harmonizes functionality among some of these core packages (see below).

The `fastverse` further allows users to freely (and permanently) extend or reduce the number of packages in the fastverse. A selection of suggested high-performing packages for various topics is provided in `fastverse_extend` (and with more details in the README). Other functions help to determine joint dependencies, sort out namespace conflicts among attached packages, and update packages.

### Functions in the fastverse Package

Functions to extend or reduce the number of packages in the fastverse - either for the session or permanently - and to restore defaults.

`fastverse_extend()`
`fastverse_detach()`
`fastverse_reset()`

Function to display conflicts for fastverse packages (or any other attached packages)

`fastverse_conflicts()`

Function to update fastverse packages (and dependencies) and install (missing) packages

`fastverse_update()`
`fastverse_install()`

Utilities to retrieve the names of fastverse packages (and dependencies), their update status and produce a situation report.

`fastverse_packages()`
`fastverse_deps()`
`fastverse_sitrep()`

Function to create a new extensible verse of packages like the fastverse

`fastverse_child()`

### fastverse Options

- `options(fastverse.quiet = TRUE)` will disable all automatic messages (including conflict reporting) when calling `library(fastvsers)`, `fastverse_extend`, `fastverse_update(install = TRUE)` and `fastverse_install`.

- `options(fastverse.styling = FALSE)` will disable all styling applied to text printed to the console.

- `options(fastverse.extend = c(...))` can be set before calling `library(fastvsers)` to extend the fastverse with some packages for the session. The same can be done with the `fastverse_extend` function after `library(fastvsers)`, which will also populate `options("fastverse.extend")`.

- `options(fastverse.install = TRUE)` can be set before `library(fastverse)` to install any missing packages beforehand. See also `fastverse_install`.

### fastverse Harmonisations

- There are 2 internal clashes between `collapse::funique` and `kit::funique`, and between `matrixStats::count` and `kit::count`. The collapse and matrixStats versions take precedence over the kit versions. For a comparison of functionality see the details section of `fastverse_conflicts`.

- Quite a number of functions in the matrixStats package do not (by default) preserve the attributes of objects passed to them, resulting in inconsistent behavior of different functions. The GitHub version of the `fastverse` alters most of the functions where this is the case, listed in a global variable `.matrixStats_replaced`, bestowing them with capabilities to preserve matrix dimension names and other attributes (for functions returning a matrix). This is done using very efficient R and C code, so that performance does not suffer. When the `fastverse` is attached, these altered function are replaced in the matrixStats namespace. Since CRAN does not allow namespace modifications in other packages, this feature is only available in the GitHub version, installable using `remotes::install_github("SebKrantz/fastverse")`. Development of CRAN and GitHub version will continue synchronous until matrixStats has evolved so that consistent attribute handling (`useNames = TRUE`) becomes the default.

[Package fastverse version 0.2.3 Index]