美文网首页Cook R生物信息学与算法数据科学与R语言
【r<-探索】R里面有没有Python中的字典概念?

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

作者: 王诗翔 | 来源:发表于2018-12-19 18:38 被阅读17次

    首先需要思考下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学习书告诉你这就是“字典”,很少有人想到用它解决问题,实际上它是很高效的。

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/ubfskqtx.html