r2r
provides a flexible
implementation of hash tables in R, allowing for:
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")
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
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.
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.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.