• R语言hash


    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"]
    <hash> 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 elements
    del( "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) # FALSE
    clear(h)
    is.empty(h) # TRUE
    h <- 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) # letters
    names(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

  • 相关阅读:
    每日作业报告
    每日作业报告
    每日作业报告
    每日作业报告
    每日作业报告
    vue路由跳转错误:Error: Redirected when going from "/login" to "/home" via a navigation guard.
    ubuntu20安装.net core SDK
    SpringBoot启动报错:Failed to configure a DataSource: 'url' attribute is not specified and no embedded
    ubuntu18.04安装rap2
    用例图基本用法
  • 原文地址:https://www.cnblogs.com/xlij1205/p/10917926.html
Copyright © 2020-2023  润新知