如何在 R 中创建一个从键到值的简单整数映射。
我想以这种方式与之交互:
id_map[245]
>> 3
id_map[123]
>> 4
谢谢
environment
s 是 R 中最接近哈希表的东西。不幸的是,它们只支持character
键。
ht <- new.env()
assign(as.character(245), 3, ht)
get(as.character(245), ht)
environment
s 是散列的,并且比使用向量更有效。与其他 R 对象不同,environment
当作为函数的参数提供时,s 通过引用传递。
您可以轻松地使用它来实现一些感觉自然的东西。
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
您可以使用数字向量,其缺点是需要额外的努力才能使其成为动态。
> 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
请注意,使用“[”函数返回列表的第二种选择,但您可以使用"[["
从该列表返回单个值:
> id_map[[245]]
[1] 3
> id_map[[123]]
[1] 4