美文网首页
R语言列表基础

R语言列表基础

作者: 采星星的小太阳BavaLI | 来源:发表于2020-05-08 10:45 被阅读0次

    列表(list) :

    Java语言开发
    python : 万物皆对象 【语法太灵活】【数据挖掘】
    R数据类型 理解 对象 【数据可视化,数据调研】

    列表可以包含很多不同类型的元素:向量,列表,字符串

    1.创建列表 (list)

    创建列表 - 正常创建方式

    > list1 = list("hello",1, c(1,2,3))
    > list1
    [[1]]
    [1] "hello"
    
    [[2]]
    [1] 1
    
    [[3]]
    [1] 1 2 3
    
    > class(list1)
    [1] "list"
    > 
    

    从这里cos看一下,list存储的是引用,cos提供了一个引用

    > list1 <- list(c(1,2,3),21.3,cos)
    > class(list1)
    [1] "list"
    > list1[[1]]#获取最直接的原子向量类型
    [1] 1 2 3
    > list1[1]#获取list的第一个元素,注意,下标还是从1开始
    [[1]]
    [1] 1 2 3
    
    > class(list1[[1]])
    [1] "numeric"
    > class(list1[1])
    [1] "list"
    > 
    

    创建列表并赋予名字及list的访问

    > list1
    [[1]]
    [1] 1 2 3
    
    [[2]]
    [1] "hello"
    
    > names(list1) <- c('a','b')#在names里面传入要赋予名字的列表,右边指定,名字
    > list1
    $`a`
    [1] 1 2 3
    
    $b
    [1] "hello"
    
    > list1['a']#按照名字访问
    $`a`
    [1] 1 2 3
    
    > list1$a#按照$符号访问
    [1] 1 2 3
    > 
    
    > list1[1]#按照原来的索引访问
    $`a`
    [1] 1 2 3
    
    > list1[1:2]#切片访问
    $`a`
    [1] 1 2 3
    
    $b
    [1] "hello"
    
    >
    > list1['a':'b']#同样是与向量一样不支持名字切片的形式访问
    Error in "a":"b" : NA/NaN argument
    In addition: Warning messages:
    1: NAs introduced by coercion 
    2: NAs introduced by coercion 
    > 
    
            # 学习R语言,要清楚对每个数据结构
            # 做访问数据的操作,返回值是什么类型
            # 没有命名的方式 , 列表访问
            # 数据可视化(向量) 常用
            # 数据挖掘数据分析:数据框,向量 常用
    

    list修改

    > list1
    $`a`
    [1] 1 2 3
    
    $b
    [1] "hello"
    > list1[[1]] =c(11,22,33,44,55)#给元素赋值的时候,不一定长度相同
    > list1
    $`a`
    [1] 11 22 33 44 55
    
    $b
    [1] "hello"
    
    > list1[[2]] <- list('bava','11')#可以替换成其它类型的数据
    #为什么可以这样做,R语言没有类型约束,自动进行类型推断
    > list1
    $`a`
    [1] 11 22 33 44 55
    
    $b
    $b[[1]]
    [1] "bava"
    
    $b[[2]]
    [1] "11"
    

    删除

    > list1
    $`a`
    [1] 11 22 33 44 55
    
    $b
    $b[[1]]
    [1] "bava"
    
    $b[[2]]
    [1] "11"
    
    > list1[-1]#注意,返回的还只是一个副本
    $`b`
    $`b`[[1]]
    [1] "bava"
    
    $`b`[[2]]
    [1] "11"
    
    > class(list1[[-1]])#删除后返回list
    [1] "list"
    > class(list1[-1])#删除后同样返回list
    [1] "list"
    > 
    

    删除多个

    > list1
    $`a`
    [1] 11 22 33 44 55
    
    $b
    $b[[1]]
    [1] "bava"
    
    $b[[2]]
    [1] "11"
    
    
    > list1[c(-1:-2)]
    named list()#全部删除,所以为空了
    

    增加

    > list1[[3]] =c(11,22,33)#原来只有两个元素,即只有1、2两个索引,现在增加一个
    > list1
    $`a`
    [1] 11 22 33 44 55
    
    $b
    $b[[1]]
    [1] "bava"
    
    $b[[2]]
    [1] "11"
    
    
    [[3]]
    [1] 11 22 33
    
    > 
    

    合并列表

    > list1 =list(c(1,2,3))
    > list2 = list(c(1,2,3))
    > c(list1,list2)
    [[1]]
    [1] 1 2 3
    
    [[2]]
    [1] 1 2 3
            #不同维度可以合并吗 
            #list6[[1]][3]
            list4 = list(c(1,2,3))
            list5 = list(c(4,5))
            list6 = c(list4,list5)
    > list6
    [[1]]
    [1] 1 2 3
    
    [[2]]
    [1] 4 5
    
    
    > list1[[1]][1]#补充一下访问,你也可以这样
    [1] 1
    > list1[1][1]#补充一下访问,你也可以这样
    [[1]]
    [1] 1 2 3
    
    > 
    

    不同维度依然可以合并

    > list4 = list(c(1,2,3),1)
    > list5 = list(c(4,53,4,5),'bava')
    > list6 = c(list4,list5)
    > list6
    [[1]]
    [1] 1 2 3
    
    [[2]]
    [1] 1
    
    [[3]]
    [1]  4 53  4  5
    
    [[4]]
    [1] "bava"
    
    > 
    

    列表转换向量

    > list4
    [[1]]
    [1] 1 2 3
    
    [[2]]
    [1] 1
    
    > unlist(list4)#使用unlist()方法,实现列表转为向量
    [1] 1 2 3 1
    > class(list4)
    [1] "list"
    > class(unlist(list4))
    [1] "numeric"
    > 
    

    好啦,今天就到这里,可以说讲的很仔细了,大家慢慢悟吧,希望能帮助到爱学习的你们!如果可以,我很开心!如果想深入学习R,欢迎访问我的主页R专栏!

    相关文章

      网友评论

          本文标题:R语言列表基础

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