[R] hash or other quick lookup function?
Duncan Murdoch
murdoch at stats.uwo.ca
Tue May 27 13:55:05 CEST 2008
Duncan Murdoch wrote:
> Esmail Bonakdarian wrote:
>
>> Hello all,
>>
>> I have a matrix of bit values.
>>
>> I compute certain values based on the bits in each row. There may be
>> *duplicate* entries in the matrix, ie several rows may be identical.
>> These rows change over time, and identical entries may not be next to
>> each other.
>>
>> Computing these values is time consuming, so I would like a way to store a
>> value once it's computed. That way I would be able to look up the value
>> based on a given bitstring (row in the matrix) and avoid having to re-compute
>> the same value.
>>
>> So, my thought is a hash function based on a bit string - does R have such
>> a thing? Or is there an alternative approach that would do the same in R?
>> The lookup should be quick, otherwise the gains from avoiding
>> recomputing identical values would be lost to some extent.
>>
>> I wasn't able to find anything via searches, I am hoping someone can
>> point me in the right direction.
>>
>>
>
> Environments can be hashed. To use this, you'd convert the bit string
> into a character string, and use that as the name of a variable in an
> environment.
>
> For example,
>
> cache <- new.env(hash=TRUE, parent=emptyenv())
> ...
> bits <- '0101'
> if (exists(bits, cache)) {
> return(get(bits, cache))
> } else {
> value <- long.computation()
> assign(bits, value)
>
Whoops, that assignment should have been in the cache:
assign(bits, value, envir=cache)
> return(value)
> }
>
>
> Duncan Murdoch
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
More information about the R-help
mailing list