继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【r<-探索】R里面有没有Python中的字典概念?

慕姐8265434
关注TA
已关注
手记 1147
粉丝 221
获赞 1064

首先需要思考下Python中的字典是个什么东西:它是一个键值对序列

R里面到底有没有类似的东西呢?肯定是有的,虽然没有字典的概念,但R里面的的确确存在字典的实现。

这个要介绍的东西就是命名向量。当我们创建一个简单的向量时,它是没有名字的,如下:

> c(1:3)
[1] 1 2 3

如果用names()给它的名字属性赋值,那就是字典了!

字典有一个非常重要的作用,就是实现映射

例如,现在你要解决这样一个问题:将下面的1改成4、2改成5、3改成6。

> x = rep(1:3, times = c(3,4,5))
> x
 [1] 1 1 1 2 2 2 2 3 3 3 3 3

当然你可以重新用rep()创建一个结果,但那就没什么意思了。

正确的做法是先构建一个“字典”:

> y = c("1"=4, "2"=5, "3"=6)
> y1 2 3 4 5 6

然后实现映射:

> r = y[as.character(x)]
> r1 1 1 2 2 2 2 3 3 3 3 3 4 4 4 5 5 5 5 6 6 6 6 6

如果觉得名字碍眼,再去掉就可以了:

> names(r) = NULL> r
 [1] 4 4 4 5 5 5 5 6 6 6 6 6

虽然只是一个小例子,但因为没有哪一个R学习书告诉你这就是“字典”,很少有人想到用它解决问题,实际上它是很高效的。



作者:王诗翔
链接:https://www.jianshu.com/p/7f51484dffdb


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP