數(shù)據(jù)結(jié)構(gòu)
一、幾個(gè)小技巧
- R的賦值符號(hào):<-
- Console 控制臺(tái)輸入命令:相當(dāng)于linux命令行
- R的代碼都是帶括號(hào)的
- 括號(hào)必須是英文
- 顯示工作路徑 getwd()
- 向量是由元素組成的(元素可以是數(shù)字或者字符串)
- 表格在R語(yǔ)言中改名叫數(shù)據(jù)框
-
?函數(shù)名調(diào)出對(duì)應(yīng)的幫助文檔(如?read.table) - 數(shù)據(jù)類(lèi)型(向量(vector)矩陣(Matrix)數(shù)組(Array)數(shù)據(jù)框(Data frame)List)
二、向量
- 元素:數(shù)字或者字符串
- 標(biāo)量:一個(gè)元素組成的變量
-
向量:多個(gè)元素組成的變量 ,是一排有序排列的元素標(biāo)量、向量與元素
常見(jiàn)賦值方法
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次
查看變量

圖cr生信星球

圖cr生信星球
從向量中提取元素的方法
1. 按位置
> x
[1] 1 2 3 1 2 3
> x[-4]#排除法,除了第4個(gè)元素之外剩余的元素
[1] 1 2 3 2 3
> x[2:4]#第2到4個(gè)元素
[1] 2 3 1
> x[-(2:4)]#除了第2-4個(gè)元素
[1] 1 2 3
> x[c(1,5)] #第1個(gè)和第5個(gè)元素
[1] 1 2
2. 按數(shù)值
> x[x==3]#等于3的元素
[1] 3 3
> x[x>1]
[1] 2 3 2 3
> x[x %in% c(1,2,5)]#存在于向量c(1,2,5)中的元素
[1] 1 2 1 2
三.數(shù)據(jù)框

示例數(shù)據(jù)1

示例數(shù)據(jù)2
1. 輸入
y<-read.csv('doudou.txt')后
結(jié)果
2. 輸入
z<-read.table('huahua.txt',sep="\t",header=T)后
結(jié)果
- 此處sep表示分隔符,\t為空格的意思,即空格為分隔符
- header為第一行是否用作列名稱(chēng)。true則excel第一行用于列名稱(chēng),具體數(shù)據(jù)從第二行開(kāi)始 false則第一行即為具體數(shù)據(jù)。此處首行X1、X2為列名稱(chēng)。
3. 設(shè)置行名和列名
> X<-read.csv('doudou.txt')
> colnames(X) #查看列名
[1] "X1" "X2"
> rownames(X) #查看行名,默認(rèn)值的行名就是行號(hào),1.2.3.4...
[1] "1" "2" "3" "4" "5"
> 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的意思是修改第一列為行名

輸入最后一行代碼后X顯示
4. 數(shù)據(jù)框的導(dǎo)出
write.table(X,file = "yu.txt",sep = ",",quote=F)#分隔符改為逗號(hào),字符串不加雙引號(hào)(默認(rèn)格式帶由雙引號(hào))
5. 變量的保存與重新加載
save.image(file="bioinfoplanet.RData")#保存當(dāng)前所有變量(保存鏡像文件)
save(X,file="test.RData")#保存其中一個(gè)變量
load("test.RData")#再次使用RData時(shí)的加載命令
6. 提取元素
- 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$列名#也可以提取列(優(yōu)秀寫(xiě)法,而且這個(gè)命令還優(yōu)秀到不用寫(xiě)括號(hào)的地步,并且支持Tab自動(dòng)補(bǔ)全哦,不過(guò)只能提取一列)

示例數(shù)據(jù)框
> z[1,2]
[1] 1
> z[1,1]
[1] "A"
> z[3,1]
[1] "C"
> z[1,]
X1 X2
1 A 1
> z[2,]
X1 X2
2 B NA
> z[,2]
[1] 1 NA NA 3 NA
> z[,1]
[1] "A" "B" "C" "D" "E"
> z[1]
X1
1 A
2 B
3 C
4 D
5 E
> z[1:2]
X1 X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
> z[c(1,2)]
X1 X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
> z$X1
[1] "A" "B" "C" "D" "E"
其他知識(shí)點(diǎn)
- 提取某兩列為散點(diǎn)圖
options(stringsAsFactors = T)
a <-data.frame(case=paste0("S",1:9),values=runif(9))
plot(a$case,a$values)
若為了避免plot函數(shù)中變量名出現(xiàn)兩次,可采用如下方法
attach(a)
plot(case,values)
或
with(a,{
plot(case,values)
x<<-summary(values) #求和并賦值給x,<<的意思是作為全局變量,也就是出了大括號(hào)仍有效。
})
x #運(yùn)行完后打印x
- 腳本的復(fù)制與保存(省略)
課后問(wèn)題:save(X,file="test.RData")這句代碼如果報(bào)錯(cuò)object X not found,是為什么,應(yīng)該怎么解決?
答:證明X對(duì)象不存在,可能是變量名寫(xiě)錯(cuò),之前并未對(duì)X變量進(jìn)行賦值
