Compact hash representations of arbitrary R objects
The digest package provides a principal function digest()
for the creation
of hash digests of arbitrary R objects (using the md5, sha-1, sha-256, crc32,
xxhash, murmurhash, spookyhash, blake3, crc32c, xxh3_64, and xxh3_128
algorithms) permitting easy comparison of R language objects.
Extensive documentation is available at the package documentation site.
As R can serialize any object, we can run digest()
on any object:
R> library(digest)
R> digest(trees)
[1] "12412cbfa6629c5c80029209b2717f08"
R> digest(lm(log(Height) ~ log(Girth), data=trees))
[1] "e25b62de327d079b3ccb98f3e96987b1"
R> digest(summary(lm(log(Height) ~ log(Girth), data=trees)))
[1] "86c8c979ee41a09006949e2ad95feb41"
R>
By using the hash sum, which is very likely to be unique, to identify an underlying object or calculation, one can easily implement caching strategies. This is a common use of the digest package.
A small number of additional functions is available:
sha1()
for numerally stable hashsums,hmac()
for hashed message authentication codes based on a key,AES()
for Advanced Encryption Standard block ciphers,getVDigest()
as a function generator for vectorised versions.Please note that this package is not meant to be deployed for cryptographic purposes. More comprehensive and widely tested libraries such as OpenSSL should be used instead.
The package is on CRAN and can be installed via a standard
install.packages("digest")
As we rely on the tinytest package, the already-installed package can also be verified via
tinytest::test_package("digest")
at any later point.
Dirk Eddelbuettel, with contributions by Antoine Lucas, Jarek Tuszynski, Henrik Bengtsson, Simon Urbanek, Mario Frasca, Bryan Lewis, Murray Stokely, Hannes Muehleisen, Duncan Murdoch, Jim Hester, Wush Wu, Qiang Kou, Thierry Onkelinx, Michel Lang, Viliam Simko, Kurt Hornik, Radford Neal, Kendon Bell, Matthew de Queljoe, Ion Suruceanu, Bill Denney, Dirk Schumacher, Winston Chang, Dean Attali, and Michael Chirico.
GPL (>= 2)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.