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

首先需要思考下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)
> y
1 2 3 
4 5 6 

然后实现映射:

> r = y[as.character(x)]
> r
1 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学习书告诉你这就是“字典”,很少有人想到用它解决问题,实际上它是很高效的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,077评论 2 89
  • 带孩子一团糟,甚至都有些不喜欢他。如何自我调整。画面一,看到一个公寓,毛坯房,水泥地。重新规划,设计。 空的状态,...
    一滴水_5977阅读 217评论 0 0
  • 今天回家都很早,吃完饭才6点多,就让娃娃练了会儿字。可是他的态度太让我失望了我。 我说让他重写,他就哭了起来,而且...
    不会撒娇的猫咪阅读 177评论 0 1