列表
列表顧名思義就是用來(lái)存儲(chǔ)很多內(nèi)容的一個(gè)集合,在其他編程語(yǔ)言中,列表一般和數(shù)組是等同的,但是在R語(yǔ)言中朽肥,列表卻是R中最復(fù)雜的一種數(shù)據(jù)結(jié)構(gòu),也是非常重要的一種數(shù)據(jù)結(jié)構(gòu)。列表就是一些對(duì)象的有序集合英古。列表中可以存儲(chǔ)若干向量、矩陣昙读、數(shù)據(jù)框召调,字符串甚至其他列表的組合。
——引用自B站基因?qū)W苑up主教學(xué)視頻中的一段文字
一、向量與列表的比較
1某残、在模式上和向量類(lèi)似国撵,都是一維數(shù)據(jù)集合。
2玻墅、向量只能存儲(chǔ)一種數(shù)據(jù)類(lèi)型介牙,列表中的對(duì)象可以是R中的任何數(shù)據(jù)結(jié)構(gòu),甚至列表本身澳厢。
二环础、列表的創(chuàng)建
先對(duì)列表元素進(jìn)行賦值,再用list()語(yǔ)句進(jìn)行賦值
a<-1:20
b<-matrix(1:20,4)
c<-mtcars
d<-"this is a test list" ##對(duì)列表元素賦值
mlist<-list(a,b,c,d) ##將列表組合后賦值給一個(gè)新的列表
mlist<-list(first=a,second=b,third=c,forth=d) ##對(duì)列表的每一列取字段名稱(chēng)
三剩拢、列表的訪(fǎng)問(wèn)
列表訪(fǎng)問(wèn)子集列表有三種方法线得,索引訪(fǎng)問(wèn),名字訪(fǎng)問(wèn)和$字符訪(fǎng)問(wèn)徐伐,而訪(fǎng)問(wèn)輸出對(duì)應(yīng)子集數(shù)據(jù)類(lèi)型的數(shù)據(jù)則需要雙中括號(hào)訪(fǎng)問(wèn)贯钩,即[[ ]]
索引訪(fǎng)問(wèn)
訪(fǎng)問(wèn)列表中單個(gè)集合,例如
mlist[1]
訪(fǎng)問(wèn)列表中多個(gè)集合办素,例如
mlist[c(1,4)]
名字訪(fǎng)問(wèn)
字段要加引號(hào)角雷,訪(fǎng)問(wèn)列表中單個(gè)集合,例如
mlist["first"]
訪(fǎng)問(wèn)列表中多個(gè)集合性穿,例如
mlist[c("first","third")]
符號(hào)訪(fǎng)問(wèn)
用$符號(hào),例如訪(fǎng)問(wèn)字段值為first的集合勺三,很高效,推薦使用需曾!
mlist$first
雙中括號(hào)訪(fǎng)問(wèn)
mlist[[1]]
四吗坚、列表添加子集
用雙中括號(hào)給列表添加子集
mlist[[5]]<-iris
命名新元素有兩種方法:第一種是重新創(chuàng)建+命名:mlist<-list("name1"=a,"name2"=b)的形式。第二種重命名所有數(shù)據(jù)集
五呆万、刪除列表子集
方法有兩種:負(fù)索引和賦空值
1.負(fù)索引刪除子集
mlist[[-5]]
2.賦空值刪除子集
mlist[[5]]<-NULL