The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

r2r

CRAN status R-CMD-check Codecov test coverage R-universe status Website Tweet

r2r provides a flexible implementation of hash tables in R, allowing for:

Installation

You can install the released version of r2r from CRAN with:

install.packages("r2r")

and the development version from my R-universe repository, with:

install.packages("r2r", repos = "https://vgherard.r-universe.dev")

Usage

library(r2r)
m <- hashmap()

# Insert and query a single key-value pair
m[[ "user" ]] <- "vgherard"
m[[ "user" ]]
#> [1] "vgherard"

# Insert and query multiple key-value pairs
m[ c(1, 2, 3) ] <- c("one", "two", "three")
m[ c(1, 3) ]
#> [[1]]
#> [1] "one"
#> 
#> [[2]]
#> [1] "three"

# Keys and values can be arbitrary R objects
m[[ lm(mpg ~ wt, mtcars) ]] <- c(TRUE, FALSE, TRUE)
m[[ lm(mpg ~ wt, mtcars) ]]
#> [1]  TRUE FALSE  TRUE

Getting help

For further details, including an introductory vignette illustrating the features of r2r hash maps, you can consult the r2r website. If you encounter a bug, want to suggest a feature or need further help, you can open a GitHub issue.

Comparison with hash

CRAN package {hash} also offers an implementation of hash tables based on R environments. The two tables below offer a comparison between {r2r} and {hash} (for more details, see the benchmarks Vignette)

Feature r2r hash
Basic data structure R environment R environment
Arbitrary type keys X
Arbitrary type values X X
Arbitrary hash function X
Arbitrary key comparison function X
Throw or return default on missing keys X
Hash table inversion X

Features supported by {r2r} and {hash}.

Task Comparison
Key insertion {r2r} ~ {hash}
Key query {r2r} < {hash}
Key deletion {r2r} << {hash}

Performances of {r2r} and {hash} for basic hash table operations.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.