列表(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"
>
网友评论