我正在研究我需要存储键值对的地图数据结构。
map[key1]<-value1
map[key2]<-value2
map[key3]<-value3
map[key4]<-value4
我需要根据关键获得价值。我怎样才能在R中实现这个?
答案 0 :(得分: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
改为使用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()
,请从空{{1}}开始。
答案 1 :(得分:1)
您可以使用命名向量:
map = c(key1 = 1, key2 = 2, key3 = 3)
map[["key1"]]
您可以轻松添加新内容:
map[["key4"]] = 4
> map
key1 key2 key3 key4
1 2 3 4