码迷,mamicode.com
首页 > 编程语言 > 详细

R语言——哈希表

时间:2015-08-21 01:54:34      阅读:5359      评论:0      收藏:0      [点我收藏+]

标签:r   hash   哈希表   键值对   

前言:

在 R 语言中有个包——hash 包提供了我们需要的哈希结构,本文主要介绍该 hash 包的使用。
(使用之前先 install.packages(“hash”) 进行安装)

其实,数据框也可以实现哈希表的功能,但是效率不高,操作也不方便。
另外,曾经出现过 rdict 包,使用起来就像 Python 里面的字典一样好用,详情请见:rdict: A hash table for R using skip lists。但是好像后来被 CRAN 取消了,也有可能是把它合并到其它包里面去了,知道的朋友有劳告知一下。


正文:

哈希表的创建和元素的添加:

## 方法一:直接创建一个hash对象
> h = hash()

## 方法二:在创建的时候添加元素
> h = hash(keys = c(‘a‘,‘b‘), values = c(2,3))
> h
<hash> containing 2 key-value pair(s).
  a : 2
  b : 3

## 方法三:键值对可用等号赋值
> h = hash(‘a‘=2, ‘b‘=3)
> h
<hash> containing 2 key-value pair(s).
  a : 2
  b : 3

## 方法四:创建hash对象以后再添加元素
> h = hash()
> h$‘c‘ = 4
> h
<hash> containing 1 key-value pair(s).
  c : 4

## 方法五:最常用的添加元素的方法
> h = hash()
> .set(h, keys = ‘d‘, values = 5)
> h
<hash> containing 1 key-value pair(s).
  d : 5

注释:方法四不能用于循环输入,因为 ‘$’ 的后缀不能是变量。而方法五不仅可以一次添加多对键值,而且允许 keys 是变量。


哈希表的清空和元素的删除:

## 方法一:清空哈希表
> h = hash(c(‘a‘,‘b‘), c(2,3))
> clear(h)
> h
<hash> containing 0 key-value pair(s).
  NA : NULL

## 方法二:删除键值对
> h = hash(c(‘a‘,‘b‘), c(2,3))
> del(‘a‘, h)   ## 等价于 delete(‘a‘, h)
> h
<hash> containing 1 key-value pair(s).
  b : 3


哈希表的查找:

## 方法一:利用index(索引)
> h = hash(‘a‘ = c(2,3,4), ‘b‘ = 5)
> h
<hash> containing 2 key-value pair(s).
  a : 2 3 4
  b : 5
> h[‘a‘]
<hash> containing 1 key-value pair(s).
  a : 2 3 4
> h[[‘a‘]]
[1] 2 3 4
> h[[‘a‘]][2]
[1] 3

## 方法二:转成列表
> h = hash(‘a‘ = c(2,3,4), ‘b‘ = 5)
> as.list(h)
$a
[1] 2 3 4

$b
[1] 5

> as.list(h)$a[2]
[1] 3

## 方法三:利用 ‘$‘
> h = hash(‘a‘ = c(2,3,4), ‘b‘ = 5)
> h$‘a‘
[1] 2 3 4
> h$‘a‘[2]
[1] 3

## 方法四:利用 values() 查找值
> h = hash(‘a‘ = c(2,3,4), ‘b‘ = 5)
> values(h)
$a
[1] 2 3 4

$b
[1] 5

> values(h)$‘a‘[2]
[1] 3
> values(h, ‘a‘)[2]
[1] 3

## 方法五:查找键
> h = hash(‘a‘ = c(2,3,4), ‘b‘ = 5)
> has.key(‘a‘, h)
   a 
TRUE 
> keys(h)
[1] "a" "b"


哈希表的其它方法:

> h = hash(‘a‘ = 2, ‘b‘ = 3)
> is.hash(h)   ## 是否是 hash 对象
[1] TRUE
> is.empty(h)   ## 是否为空
[1] FALSE
> length(h)   ## 哈希表的长度
[1] 2
> h2 = copy(h)   ## 哈希表的拷贝
> h2
<hash> containing 2 key-value pair(s).
  a : 2
  b : 3

关于 R 语言 hash 包的更多内容请见:Package ‘hash’


转载请注明出处,谢谢!(原文目录:http://blog.csdn.net/Bone_ACE/article/details/47821589

R语言——哈希表

标签:r   hash   哈希表   键值对   

原文地址:http://blog.csdn.net/bone_ace/article/details/47821589

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!