[R] Data Frame as Hash Table

Barry Rowlingson b.rowlingson at lancaster.ac.uk
Sun May 30 10:13:28 CEST 2010


On Sun, May 30, 2010 at 9:03 AM, Alan Lue <alan.lue at gmail.com> wrote:
> I'm interested in using a data frame as if it were a hash table.  For
> instance if I had the following,
>
>> (d <- data.frame(key=seq(0.5, 3, 0.5), value=rnorm(6)))
>  key        value
> 1 0.5 -1.118665122
> 2 1.0  0.465122921
> 3 1.5 -0.529239211
> 4 2.0 -0.147324638
> 5 2.5 -1.531503795
> 6 3.0 -0.002720434
>
> Then I'd like to be able to quickly retrieve the "value" of "key" 1.5
> to get -0.53.  How would one go about doing this?

Assign the key to the rownames:

> row.names(d)=d$key
> d
    key      value
0.5 0.5 -0.1023732
1   1.0 -0.2005591
1.5 1.5  0.1204866

but note they are character strings:

> d["0.5",]
    key      value
0.5 0.5 -0.1023732

 I'm not sure if R uses a fast hashing algorithm for lookups or a
simple sequential search. Looking at the source code, testing, or
waiting for someone else to answer that on here will tell.

 Or you could do it with a list, but again the keys are always
character strings.

Barry



More information about the R-help mailing list