如何使用R包' hash'来访问R中的整数键

时间:2013-08-05 20:03:00

标签: r

我想在R中构建一个哈希。我在R中安装了哈希包。

我需要有整数键。但是,我无法访问它们。

> y <- as.character(seq(0,10,1))
> y
 [1] "0"  "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10"

> h <- hash(key =y, values = 1:11)
> h
<hash> containing 2 key-value pair(s).
  key : 0  1  2  3  4  5  6  7  8  9  10
  values :  1  2  3  4  5  6  7  8  9 10 11

当我尝试访问密钥时,它给了我一个NULL值。

> h[["0"]]
NULL

 h$"0"
NULL
> h$0
Error: unexpected numeric constant in "h$0"

有解决方法吗?

3 个答案:

答案 0 :(得分:2)

library(hash)    
h <- hash(y, 1:11)
> h[["0"]]
    [1] 1
> h["0"]
<hash> containing 1 key-value pair(s).
  0 : 1
> h$"0"
[1] 1

答案 1 :(得分:2)

您可以使用

 h <- hash(y, 1:11)

 h[["2"]]
 [1] 3

但是,我只会使用命名列表。为什么需要哈希包?

 h <- as.list(1:11)
 names(h) <- y
 h[["2"]]
 [1] 3

答案 2 :(得分:0)

使用setNames有效:

h <- hash(setNames(1:11, 0:10))
h[["0"]]

另一种选择可能是使用memoise包。