4

我想在 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"

有针对这个的解决方法吗 ?

4

3 回答 3

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
于 2013-08-05T20:18:25.947 回答
2

您可以使用

 h <- hash(y, 1:11)

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

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

 h <- as.list(1:11)
 names(h) <- y
 h[["2"]]
 [1] 3
于 2013-08-05T20:18:58.583 回答
0

使用setNames作品:

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

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

于 2013-08-05T20:16:46.013 回答