學習一天比一天晚缭贡,不行啊膊爪,你要畢業(yè)啊检碗,長點心吧
看之前請保證看過這篇:寫給零基礎同學的R和Rstudio教程
獲取示例數(shù)據(jù):在公眾號后臺回復:“數(shù)據(jù)類型”即可獲得
(1)R的賦值符號不是等號平窘,而是<-
(2)在Console 控制臺輸入命令楷兽,相當于Linux的命令行
(3)R的代碼都是帶括號的,括號必須是英文的叉讥。
(4)顯示工作路徑 getwd()
設置工作路徑 setwd("C:/Users/kingjie/Desktop/Rdata")
(5)向量是由元素組成的窘行,元素可以是數(shù)字或者字符串。
(6)表格在R語言中改名叫數(shù)據(jù)框_
(7)別只復制代碼图仓,要理解其中的命令罐盔、函數(shù)的意思。函數(shù)或者命令不會用時救崔,除了百度/谷歌搜索以外惶看,用這個命令查看幫助:?read.table
,調出對應的幫助文檔六孵,翻到example部分研究一下碳竟。
(8)數(shù)據(jù)類型(重點只有兩個,剩下的不看)
- 向量(vector)??重要
- 矩陣(Matrix)
- 數(shù)組(Array)
- 數(shù)據(jù)框(Data frame)??重要
- List
正文開始
在這些數(shù)據(jù)類型里狸臣,生信學習者最需要熟悉的是向量和數(shù)據(jù)框莹桅。
part1:向量
1.標量和向量的區(qū)分
首先明確“元素”的意思,元素指的是數(shù)字或者字符串(用chr表示)等,根據(jù)它可以區(qū)分兩個詞:
標量:一個元素組成的變量
向量:多個元素組成的變量
(補充:一個向量是一排有序排列的元素诈泼,以后會用到把一個向量作為數(shù)據(jù)框中的一列的情況懂拾。)
<figcaption style="margin: 10px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">理解元素、向量和標量</figcaption>
使用時铐达,一般都會直接給變量定義岖赋,也就是“賦值”,字面意思是賦予這個變量一個數(shù)值(其實也不一定是數(shù)值瓮孙,還可以是字符串/數(shù)據(jù)框等等)唐断。
x<-c(1,2,3) #常用的向量定義寫法,意為將x定義為由元素1杭抠,2脸甘,3組成的向量。x<-(1:10) #從1-10之間所有的整數(shù)x<-seq(1,10,by = 0.5) #1-10之間每隔0.5取一個數(shù)(注意這里是逗號不是分號)x<-rep(1:3,times=2) #1-3 重復2次
新手tips:
1.如果你把這幾行代碼都打過了偏灿,那么x就被你賦值了4次丹诀,結果就是,第一次賦值被第二次的覆蓋了翁垂,第二次的賦值又被第三次的覆蓋了铆遭,以此類推,以最后一次為準哦沿猜。
2.補充一下:你給變量賦值以后
<figcaption style="margin: 10px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">在哪看變量</figcaption>
<figcaption style="margin: 10px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">怎么看變量</figcaption>
2.從向量中提取元素
(1)根據(jù)元素位置
#這里的x是你剛才賦值的變量名,根據(jù)自己的情況來修改x[4] #x第4個元素x[-4]#排除法啼肩,除了第4個元素之外剩余的元素x[2:4]#第2到4個元素x[-(2:4)]#除了……x[c(1,5)] #第1個和第5個元素
(2)根據(jù)值的大小
x[x==10]#等于10的元素x[x<0]x[x %in% c(1,2,5)]#存在于向量c(1棍弄,2,5)中的元素
Part2:數(shù)據(jù)框
將示例數(shù)據(jù)放在你的RData文件夾下(E庇巍!痕支!重要)
示例數(shù)據(jù)是如何獲得的颁虐?(可跳過)
(1)新建doudou.txt,輸入以下(如果教程里讓你新建卧须,又沒說在哪里另绩,你就默認在工作目錄下新建。)
X1,X2
A,1
B,
C,
D,3
E,
小抄截圖中顯示的NA表示空值花嘶,所以新建的時候像我一樣空著就好笋籽。用以下命令即可獲得示例數(shù)據(jù)框:
X<-read.csv('doudou.txt')
(1)讀取本地數(shù)據(jù)
(本著不該皮時不能皮的原則,講一下正當?shù)淖x取命令)
(huahua.txt在示例數(shù)據(jù)里有椭员,記得一定要放在工作目錄RData里车海,否則報錯。)
read.table(file = "huahua.txt",sep = "\t",header =T) #讀取文件隘击,分隔符為Tab侍芝,有表頭 a<-read.table(file = "huahua.txt",sep = "\t",header =T)#把這個數(shù)據(jù)框賦給一個變量a
(我還是喜歡用read.csv命令研铆,這個格式太好了,在下一篇教程里有詳細的說明)
(2)設置行名和列名
X<-read.csv('doudou.txt') #在示例數(shù)據(jù)里有doudou.txt 注意這里的變量X是一個數(shù)據(jù)框colnames(X) #查看列名rownames(X) #查看行名,默認值的行名就是行號州叠,1.2.3.4...colnames(X)[1]<-"bioplanet"#有的公司返回數(shù)據(jù)棵红,左上角第一格為空,R會自動補為x,用這個命令來修改X<-read.csv(file = "huahua.txt",sep = "\t",header =T,row.names=1)#最后row.names的意思是修改第一列為行名
(其實我們這個數(shù)據(jù)框并不需要改谷饿,如果你已經(jīng)改了琅催,知道怎么撤銷嗎篡悟?用剛才的read.table命令重新賦值一遍就可以覆蓋掉你剛才改瞎的了。這也就是變量為什么叫"變"量)
(3)數(shù)據(jù)框的導出
write.table(X,file = "yu.txt",sep = ",",quote=F)#分隔符改為逗號交煞,字符串不加雙引號(默認格式帶由雙引號)
(4)變量的保存與重新加載
#這次沒有處理完的數(shù)據(jù)下次想接著用怎么辦?--學會保存和重新加載。保存的格式是RData可岂。save.image(file="bioinfoplanet.RData")#保存當前所有變量save(frame1,file="frame1.RData")#保存其中一個變量load("frame1.RData")#再次使用RData時的加載命令
(5)提取元素
(這里的X是指的我用過的一個變量名错敢,實際應用要懂得替換。剛才讓師姐測試我教程的時候很擔憂你們粗暴地復制我的代碼缕粹,最后啥也沒看懂稚茅。)
- X[x,y]#第x行第y列- X[x,]#第x行- X[,y]#第y列(橫著寫,這是不夠懶也不夠優(yōu)秀卻能存在的寫法)- X[y] #第y列(豎著寫平斩,這是懶惰又優(yōu)秀的寫法)- X[a:b]#第a列到第b列- X[c(a,b)]#第a列和第b列- X$列名#也可以提取列(優(yōu)秀寫法亚享,而且這個命令還優(yōu)秀到不用寫括號的地步,并且支持Tab自動補全哦绘面,不過只能提取一列)
(6)【選修部分】直接使用數(shù)據(jù)框中的變量
提取某兩列作散點圖:
(需要提示一下欺税,這里的case和values是兩個單純的列名,沒別的意思)
c <-data.frame(case=paste("S",c(1:50)),values=runif(50))> plot(c$case,c$values)
--這種方法有個缺點:數(shù)據(jù)框名a在代碼中重復出現(xiàn)(不符合懶惰(哦不揭璃,高效)的要求)
這里地數(shù)據(jù)框名比較簡短晚凿,可能你看不出不夠優(yōu)雅,本著花花懶惰的強迫癥精神瘦馍,不能允許數(shù)據(jù)框名出現(xiàn)兩次歼秽。(如果你不夠懶惰,下面的代碼別看了情组,會瞎的)
那么如何懶惰地實現(xiàn):
方法1:attach
- 將數(shù)據(jù)框名添加到搜索環(huán)境中:attach(c),作圖時就只需輸入列名(連$都不用了)燥筷。
attach(c)plot(case,values)
做完后將a刪除出搜索環(huán)境 detach(c)
局限性:兩個以上數(shù)據(jù)框的列名有沖突時,同時attach會報錯院崇。
方法2:with
with(c,{+ plot(case,values)x<<-summary(values) #求和并賦值給x,<<的意思是作為全局變量肆氓,y也就是出了with循環(huán)仍有效。})x #運行完后打印x
簡單查一下什么是with循環(huán)哦底瓣?
由于昨天沒有用到腳本窗口谢揪,這里正好學習一下腳本的使用和保存:將上面的代碼復制(手打更好)到一個新的R腳本中。
然后保存到工作目錄下,用凡人的方式打開键耕,你會看到它長這樣寺滚。
請注意腳本文件的后綴就是R,在R語言里還是很在意后綴的屈雄。很多復雜的代碼都是大神寫的村视,就是以腳本的形式給你,要用的時候直接找到他酒奶,用Rstudio打開就好蚁孔。