Implements a S4 hash class in R similar to hashes / associatesd arrays /
dictionaries in other programming languages. Where possible, the hash
class uses the standard R accessors: $, [ and [[.
Hash construction is flexible and takes several syntaxes and all hash
operations are supported.
For shorter key-value pairs, lists might yield higher performance, but for
lists of appreciable length hash objects handly outperform native lists.
Slots
.xData:
Object of class "environment". This is the hashed environment
used for key-value storage.
signature(key = "ANY", hash = "hash"): Test for existence of key
is.empty
signature(x = "hash"): Test if no key-values are assigned
length
signature(x = "hash"): Return number of key-value pairs from the hash
keys
signature(hash = "hash"): Retrieve keys from hash
values
signature(x = "hash"): Retrieve values from hash
copy
signature(x = "hash"): Make a copy of a hash using a new environment.
format
signature(x = "hash"): Internal function for displaying hash
Note
HASH KEYS must be a valid character value and may not be the empty
string "".
HASH VALUES can be any R value, vector or object.
PASS-BY REFERENCE. Environments and hashes are special objects in R
because only one copy exists globally. When provide as an argument to
a function, no local copy is made and any changes to the hash in the
functions are reflected globally.
PERFORMANCE. Hashes are based on environments and are
designed to be exceedingly fast using the environments internal
hash table. For small data structures, a list will out-perform a hash
in nearly every case. For larger data structure, i.e. >100-1000 key
value pair the performance of the hash becomes faster. Much beyond that
the performance of the hash far outperforms native lists.
MEMORY. Objects of class hash do not release memory with a call to
rm. clear must be called before rm to properly
release the memory.