博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
R语言hash
阅读量:7060 次
发布时间:2019-06-28

本文共 1832 字,大约阅读时间需要 6 分钟。

hash的好处,用过才知道

R语言hash实现也很方便

install.packages("hash")library(hash)

我们载入hash包以后就可以进行hash赋值操作了,可以一对一,多对一和一对多,但如果键和值都大于一且长度不一样就会报错,hash的键是字符型,值不做要求

c<-hash(keys="p",values="a")c<-hash(keys="p",values=c("a","b","c"))c<-hash(keys="p",values=1:10) hash( a=1, b=2, c=3 ) > c<-hash(keys=c("o","p"),values=c("a","c","b")) Error in .set(h, ...) : Keys of length 2 do not match values of length 3

根据键取值我们可以这样操作

> c$p[1] "a" "c" "b"> c["p"]
containing 1 key-value pair(s). p : a c b> c[["p"]][1] "a" "c" "b"其实相当于命名的列表

我们也可以用 .set()函数来赋值,这个在循环中会用到

h <- hash().set( h, keys=letters, values=1:26 ).set( h, a="foo", b="bar", c="baz" ).set( h, c( aa="foo", ab="bar", ac="baz" ) )

 清除hash键值对对象用clear()函数,直接用rm()函数不能清理占用的内存

clear(x)

R语言赋值也和python一样是对内存位置的引用,如果我们想复制一个hash,复制后又不想和以前的对象有关联,我们就要用copy()函数,简单的赋值只相当于建立硬链接

h <- hash( a=1, b=2 )h.new <- copy( h )

从hash中删除键值对

用法:del(x,hash)delete(x,hash)例子:h <- hash( letters, 1:26 )h # 26 elementsdel( "a", h )h # 25 elements

判断建是否存在

用法:has.key(key, hash, ...)实例:h <- hash( letters, 1:26 )all( has.key( letters, h ) ) # TRUE

判断是否为hash对象

is.hash(x)

判断hash是否为空

h <- hash( a=1, b=2, c=3 )is.empty(h) # FALSEclear(h)is.empty(h) # TRUEh <- hash()is.empty(h) # TRUE

 

将hash的键和值反向

h <- hash( a=1, b=1:2, c=1:3 )invert(h)inverted.hash( a=1, b=1:2, c=1:3 )

返回hash的键和值

h <- hash( letters, 1:26 )返回键keys(h) # lettersnames(h) # same返回值values(h) h <- hash( letters, 1:26 ) values(h) # 1:26 values(h, simplify = FALSE ) values(h, USE.NAMES = FALSE ) h <- hash( 1:26, letters ) values(h) values(h, keys=1:5 ) values(h, keys=c(1,1,1:5) ) values(h, keys=1:5) <- 6:10 values(h) <- rev( letters

返回键值对的个数

h <- hash( letters, 1:26 )length(h) # 26

将其他类型对象转为hash键对象

make.keys( letters )make.keys( 1:26 )

 参考文献:

https://cran.r-project.org/web/packages/hash/hash.pdf

转载于:https://www.cnblogs.com/xlij1205/p/10917926.html

你可能感兴趣的文章
全文检索、数据挖掘、推荐引擎系列3---全文内容推荐引擎之中文分词
查看>>
软件工程—软件可靠性测试
查看>>
个人阅读计划
查看>>
SQL Server 查看数据页面
查看>>
angularJS的过滤器!
查看>>
微信小程序 --- Image组件
查看>>
sql 获取一个周的周一和周日
查看>>
zepto源码分析-代码结构【转载】
查看>>
nginx+uwsgi+Django部署线上环境
查看>>
jQuery 包装集
查看>>
CCNA Cloud CLDFND 210-451 QUIZ: Server Virtualization
查看>>
应用层各协议用的端口
查看>>
VMware workstation转到vsphere解决办法
查看>>
从 PC 卸载 Office
查看>>
matlab练习程序(图像加噪,各种滤波)
查看>>
matlab练习程序(摄像头获取数据)
查看>>
shell脚本学习
查看>>
OpenJudge Bailian 2757 最长上升子序列 DP
查看>>
sql把逗号分隔的字符串拆成临时表
查看>>
Fortify代码扫描解决方案
查看>>