? ? ? ? ? ? ? ? ? ? ? ? ? ? 數(shù)據(jù)結(jié)構(gòu)
? 1. 知識(shí)點(diǎn)
(1)R的賦值符號(hào)<-
? (2)? 在Console控制臺(tái)輸入命令胳赌,相當(dāng)于Linux的命令行
(3)R的代碼都帶括號(hào)这嚣,而且必須是英文格式下的括號(hào)
? (4)getwd () 顯示工作的路徑
? (5)向量(Vector)是由元素組成的量淌,元素可以是字符串或者數(shù)字
? (6)R語(yǔ)言中的數(shù)據(jù)框(Data frame)就是表格
? ? (7)函數(shù)或者命令不會(huì)用時(shí)聋迎,除了百度和谷歌,恩沛?read.table
? ? ? 重點(diǎn):向量(vector)
? ? ? a. 向量可以是數(shù)值在扰,字符,邏輯等雷客。
? ? ? ? b.? 向量元素的添加及合并
? ? ? ? 常用函數(shù)為c()芒珠,append()
? ? ? ? c. 向量批量序列的生成
? ? ? ? seq(length=, from=, to=).?
? ? ? ? ? length:指定生成個(gè)數(shù);from:是指開(kāi)始生成的點(diǎn)搅裙;to:截止點(diǎn)皱卓。如果不指定,則默認(rèn)條件? ? ? ? ? ? 下:seq(N1,N2,BY=)部逮,其中娜汁,n1:開(kāi)始位置;n2:截止位置甥啄;by=指定間隔存炮,
? ? ? ? ? rep()? ? rep(P炬搭,N) 重復(fù)生成P值N次蜈漓;2.rep(a1:a2,a1:a2) #重復(fù)a1到a2穆桂,按a1產(chǎn)生a1? 次,按a2產(chǎn)生a2 次
? ? ? ? ? d.? 向量排序? ? sort(); 輸出排序后的結(jié)果融虽;order()享完;輸出排序后的各個(gè)向量位置,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 學(xué)習(xí)了一丟丟有额,感覺(jué)信息量很大般又。
? ? ? ? ? 重點(diǎn)之-數(shù)據(jù)框
? ? ? ? ? 數(shù)據(jù)框(Data Frames)是一種特殊的列表,其中所用元素長(zhǎng)度都相等巍佑,列表中的每個(gè) 元 素都可以看作一列茴迁,每個(gè)元素的長(zhǎng)度可以看作行數(shù)。
? ? ? ? ? ? 創(chuàng)建顯式數(shù)據(jù)框的方法是data.frame()
? ? part1:向量
? 1. 標(biāo)量和向量的區(qū)別
? ? 元素指的是數(shù)字或者字符串(用chr表示)等
? ? 標(biāo)量:一個(gè)元素組成的變量
? ? 向量:多個(gè)元素組成的變量
x<- c(1,2,3) #常用的向量寫(xiě)法堕义,意為將x定義為由元素1,2脆栋,3組成的向量倦卖。
x<- 1:10 #從1-10之間所有的整數(shù)
x<- seq(1,10,by = 0.5) #1-10之間每隔0.5取一個(gè)數(shù)(注意是逗號(hào)不是分號(hào))
x<- rep(1:3,times=2) #1-3 重復(fù)2次
注:最后一次賦值是最后的結(jié)果.
? 2. 從向量中提取元素
(1)根據(jù)元素位置
x[4]? #x第4個(gè)元素
x[-4]。#排除法椿争,除了第4個(gè)元素之外剩余的元素
x[2:4]? #第2到4個(gè)元素
x[-(2:4)]? #除了第2-4個(gè)元素
x[c(1,5)] #第1個(gè)和第5個(gè)元素
(2)根據(jù)值
x[x==10]#等于10的元素
x[x %in% c(1,2,5)]怕膛。 #存在于向量c(1,2秦踪,5)中的元素
part: 數(shù)據(jù)框
卡在了第一步褐捻。額。汗Q笄取舍扰!
(1)讀取本地?cái)?shù)據(jù)
? ? ? ? ? read.table(file = "doudou.txt",sep ="\t",header = T)
? ? (2)設(shè)置行名和列名
X<-read.csv('doudou.txt') #在示例數(shù)據(jù)里有doudou.txt 注意這里的變量X是一個(gè)數(shù)據(jù)框?
colnames(X) #查看列名
rownames(X) #查看行名,默認(rèn)值的行名就是行號(hào)
colnames(X)[1]<-"bioplanet"? #有的公司返回?cái)?shù)據(jù)希坚,左上角第一格為空边苹,R會(huì)自動(dòng)補(bǔ)為x,用這個(gè)命令來(lái)修改
X<-read.csv(file = "huahua.txt",sep = " ",header =T,row.names=1)? ? #最后row.names的意思是修改第一列為行名
(3)數(shù)據(jù)框的導(dǎo)出
? ? ? write.table(X,file = "yu.txt",sep = ",",quote=F)
? ? ? #分隔符改為逗號(hào),字符串不加雙引號(hào)(默認(rèn)格式帶由雙引號(hào))
(4)變量的保存與重新加載
#這次沒(méi)有處理完的數(shù)據(jù)下次想接著用怎么辦?--學(xué)會(huì)保存和重新加載裁僧。保存的格式是RData个束。
save.image(file="bioinfoplanet.RData")? #保存當(dāng)前所有變量
save(X,file="test.RData")? #保存其中一個(gè)變量load("test.RData")#再次使用RData時(shí)的加載命令
(5)提取元素
- X[x,y]? #第x行第y列
- X[x,]? #第x行
- X[,y]? #第y列
- X[y]? ? #也是第y列
- X[a:b]? ? #第a列到第b列
- X[c(a,b)].? #第a列和第b列
- X$列名.? #也可以提取列
(6)直接使用數(shù)據(jù)框中的變量
options(stringsAsFactors = T)
a <-data.frame(case=paste0("S",1:9),values=runif(9))
plot(a$case,a$values)
小技巧
attach
將數(shù)據(jù)框名添加到搜索環(huán)境中:attach(a),作圖時(shí)就只需輸入列名(連$都不用了)
做完后將a刪除出搜索環(huán)境 detach(a)
局限性:兩個(gè)以上數(shù)據(jù)框的列名有沖突時(shí),同時(shí)attach會(huì)報(bào)錯(cuò)聊疲。
with
with(a,{
plot(case,values)
x<<-summary(values)?
#求和并賦值給x,<<的意思是作為全局變量茬底,也就是出了大括號(hào)仍有效。
})
x? ? ? ? ? ? ? #運(yùn)行完后打印x
腳本文件的后綴就是R获洲,在R語(yǔ)言里還是很在意后綴的阱表。
save(X,file="test.RData")
出現(xiàn)報(bào)錯(cuò):object X not found,
為什么?字面意思:沒(méi)有找打X最爬,保存變量X時(shí)出了問(wèn)題涉馁,解決方法:額卷中。