3

我正在研究需要存储键值对的地图数据结构。

 map[key1]<-value1
 map[key2]<-value2
 map[key3]<-value3
 map[key4]<-value4

我需要根据键获得价值。我如何在 R 中实现这一点?

4

2 回答 2

9

使用列表,因为用 构造的简单向量c只能处理标量值:

> map = c(key1 = c(1,2,3), key2 = 2, key3 = 3)
> map[["key1"]]
Error in map[["key1"]] : subscript out of bounds

为什么会失败?因为map现在是:

> map
key11 key12 key13  key2  key3 
    1     2     3     2     3 

改用 a list

> map = list(key1 = c(1,2,3), key2 = 2, key3 = 3)
> map[["key1"]]
[1] 1 2 3

也可以动态扩展:

> map[["key99"]]="Hello You!"
> map
$key1
[1] 1 2 3

$key2
[1] 2

$key3
[1] 3

$key99
[1] "Hello You!"

map=list()如果你正在建立一个空的,从一个空的开始。

于 2013-02-04T07:54:50.747 回答
1

您可以使用命名向量:

map = c(key1 = 1, key2 = 2, key3 = 3)
map[["key1"]]

您可以轻松添加新的:

map[["key4"]] = 4
> map
key1 key2 key3 key4 
   1    2    3    4 
于 2013-02-04T07:30:00.887 回答