R整数键,值映射

时间:2013-06-24 14:57:07

标签: r map hashmap key-value

如何在R中从键到值创建一个简单的整数映射。

我想以这种方式与之互动:

id_map[245]
>> 3
id_map[123]
>> 4

由于

2 个答案:

答案 0 :(得分:8)

environment是最接近R中散列表的东西。不幸的是,它们只支持character个键。

ht <- new.env()
assign(as.character(245), 3, ht)
get(as.character(245), ht)

environment被散列,并且比使用向量更有效。与其他R对象不同,environment在作为函数的参数提供时通过引用传递。

您可以轻松地使用它来实现感觉自然的东西。

new.hashtable <- function() {
    e <- new.env()
    list(set = function(key, value) assign(as.character(key), value, e),
         get = function(key) get(as.character(key), e),
         rm = function(key) rm(as.character(key), e))
}
ht <- new.hashtable()
ht$set(245, 3)
ht$get(245)
# [1] 3

答案 1 :(得分:1)

您可以使用数字向量,其缺点是需要额外的努力才能使其动态化。

> id_map <- numeric(500)
> id_map[c(245,123)] <- c(3,4)
> id_map[245]
[1] 3
> id_map[123]
[1] 4

或者你可以使用一个动态数据结构列表:

 > id_map <- list(500)
> id_map[c(245,123)] <- c(3,4)
> id_map[245]
[[1]]
[1] 3

> id_map[123]
[[1]]
[1] 4

请注意,第二种选择是&#34; [&#34;函数返回一个列表,但您可以使用"[["从该列表中返回单个值:

> id_map[[245]]
[1] 3
> id_map[[123]]
[1] 4