列表
2018-08-31
2018-08-31
数据结构-列表
列表是一个二维数据,在R语言中使用list()函数来定义,列表中的每个元素可以是单个变量或者是向量,甚至是另一个列表。
列表中每个向量的长度可以不同,这是列表和数据框的重要区别。数据框是一种形式特殊的列表。
1 列表的访问与读取
创建列表函数的基本书写格式为:
data<-list(成分名1=对象名1,成分名2=对象名2,…)
data<-list(subject=c("chinese","math","English"),grade=c(99,89,100),country="china",class="1" )#创建列表
print(data) #读取列表
## $subject
## [1] "chinese" "math" "English"
##
## $grade
## [1] 99 89 100
##
## $country
## [1] "china"
##
## $class
## [1] "1"
在上面的示例中,data是一个list对象,内部元素分别存储于名称为“subject”~“class”的4列中。
1)使用length()函数可以获得列表中向量的个数
print(length(data)) # 得出列表的长度
## [1] 4
2)使用$符号取得列表内对应的成分
访问列表中第二个成分的元素
print(data$grade) # 返回列表中第二个成分的值
## [1] 99 89 100
访问列表中第一个成分的第一个元素
print(data$subject[1]) # 该列表中第一个成分的第一个元素
## [1] "chinese"
3)使用[[ ]]符号获取列表内所对应的对象的内容
print(data[[1]]) # 访问该列表的第一个成分的值
## [1] "chinese" "math" "English"
2 增加列表向量
在列表末尾添加一个新的向量Date
names(data) #查看当前列表的向量名称
## [1] "subject" "grade" "country" "class"
新增加一列列表名称
data$Date <- as.Date(rep("2018-6-1",3)) #增加Date列表的内容
names(data) #查看增加的列表名称
## [1] "subject" "grade" "country" "class" "Date"
访问列表向量内容
print(data$Date) #访问增加的列表向量内容
## [1] "2018-06-01" "2018-06-01" "2018-06-01"
3 列表合并
将命名为data的列表与新的列表利用c()函数进行合并
dat<-c(data,list(e=c("Geography","Music")))
print(dat)
## $subject
## [1] "chinese" "math" "English"
##
## $grade
## [1] 99 89 100
##
## $country
## [1] "china"
##
## $class
## [1] "1"
##
## $Date
## [1] "2018-06-01" "2018-06-01" "2018-06-01"
##
## $e
## [1] "Geography" "Music"
4 删除行内元素
如果想要删除列表内的成分值,只需将此成分设为NULL。当所删除的成分不是最后一个时,原先后面的成分会往前移动。如下所示:删除第二个成分,则删除后的第三个成分会变成第二个成分,其他以此类推。
dat[2]<-NULL #删除列表dat中的第二个成分值
dat
## $subject
## [1] "chinese" "math" "English"
##
## $country
## [1] "china"
##
## $class
## [1] "1"
##
## $Date
## [1] "2018-06-01" "2018-06-01" "2018-06-01"
##
## $e
## [1] "Geography" "Music"