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
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)
<- hashmap()
m
# Insert and query a single key-value pair
"user" ]] <- "vgherard"
m[[ "user" ]]
m[[ #> [1] "vgherard"
# Insert and query multiple key-value pairs
c(1, 2, 3) ] <- c("one", "two", "three")
m[ c(1, 3) ]
m[ #> [[1]]
#> [1] "one"
#>
#> [[2]]
#> [1] "three"
# Keys and values can be arbitrary R objects
lm(mpg ~ wt, mtcars) ]] <- c(TRUE, FALSE, TRUE)
m[[ lm(mpg ~ wt, mtcars) ]]
m[[ #> [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.
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.