? ? ? ? 生信起步第五站--R,果然,這個大哥有點復雜??
? ? ? ? 今天主要了解的是R的數(shù)據(jù)結構,一般呢包括以下幾個,但花花說向量和數(shù)據(jù)框是最重要的!
- 向量
- 矩陣
- 數(shù)組
- 數(shù)據(jù)框
- 因子
- 列表
向量
向量是由多個元素組成的變量。(有序排列)元素指的是數(shù)字或者字符串(用chr表示)等
標量是由一個元素組成的變量。
1 賦值
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次

注:多次給一個變量(如:x)賦值,只會保存最后一個

2 從向量中提取元素
- 根據(jù)元素位置
x[4]x第4個元素
x[-4]排除法,除了第4個元素之外剩余的元素
x[2:4]第2到4個元素
x[-(2:4)]除了……
x[c(1,5)]第1個和第5個元素
根據(jù)元素位置提取元素
- 根據(jù)值得大小
x[x==10]等于10的元素
x[x<0]
x[x %in% c(1,2,5)]存在于向量c(1,2,5)中的元素
根據(jù)值得大小提取元素
注:前兩行會顯示(0),是因為在前面賦值的變量包括[1,2,3,1,2,3],沒有等于10的元素,第二行代碼同理,故換一下數(shù)值即可理解的更清晰。
數(shù)據(jù)框
1讀取本地數(shù)據(jù)
此項,尷尬的有兩點:
1.示例數(shù)據(jù)花花已給,直接下載即可;(請記得治療腦殘問題??)
2.代碼報錯是因少打(),輸入或tab鍵補全即可。(請再次記得治療腦殘問題??)
read.table(file = "huahua.txt",sep = "\t",header =T)

X<-read.csv("huahua.txt")
a<-read.table(file = "huahua.txt",sep = "\t",header =T)把這個數(shù)據(jù)框賦給一個變量


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的意思是修改第一列為行名

3數(shù)據(jù)框導出
write.table(X,file = "yu.txt",sep = ",",quote=F)分隔符改為逗號,字符串由默認的帶雙引號改為不加雙引號


4變量的保存與重新加載
save.image(file="bioinfoplanet.RData")保存當前所有變量
save(frame1,file="frame1.RData")保存其中一個變量
load("frame1.RData")再次使用RData時的加載命令
5提取元素
-
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自動補全哦,不過只能提取一列)
練習:將之前到處的yu.txt補兩列信息,作為提取來源,操作結果如下:
提取元素
6直接使用數(shù)據(jù)框中的變量
目的:提取某兩列作散點圖(case、values是兩個列名)
花花說下面這在個是“勤勤懇懇”的人的做法
c <-data.frame(case=paste("S",c(1:50)),values=runif(50))
> plot(c$case,c$values)

然而,這才是王道!
1.attach用法
attach(c)將數(shù)據(jù)框名添加到搜索環(huán)境中:attach(c)
plot(case,values)作圖時就只需輸入列名(連$都不用了)
detach(c)做完后將a刪除出搜索環(huán)境detach(c)
局限性:兩個以上數(shù)據(jù)框的列名有沖突時,同時attach會報錯。
2.with
with()函數(shù):適用于當同名變量出現(xiàn)多次,避免程序定位錯誤的情況
在腳本窗口輸入以下東東,然后run,出來的散點圖都還是上面一樣啦~~~
+ plot(case,values)
x<<-summary(values) #求和并賦值給x,<<的意思是作為全局變量,y也就是出了with循環(huán)仍有效。
})
x #運行完后打印x

Xmind

? ? ? ?今天東西還蠻多的,代碼操作還好(除了瞎的毛?。?,但函數(shù)理解是個問題,需要用腦子啊??



