生信技能樹數(shù)據(jù)挖掘課程學習筆記
二、數(shù)據(jù)類型和向量
數(shù)據(jù)類型
- 數(shù)值型numeric:1.3涝开、2
- 字符型 character:“a”循帐、‘nn’
- 邏輯型 logical :TRUE T、FALSE F舀武、NA
判斷數(shù)據(jù)類型的函數(shù):class( )拄养,將要判斷的內(nèi)容寫在括號里,常見報錯:引號银舱、拼寫錯誤瘪匿、大小寫
邏輯型數(shù)據(jù)
比較運算的結(jié)果是邏輯值 >, <, <=, >=, == , !=
邏輯運算 多個邏輯條件的連接與&跛梗、或|、非!
數(shù)據(jù)類型的判斷和轉(zhuǎn)換
is族函數(shù)棋弥,判斷核偿,返回值為TRUE或FALSE
is.numeric() 是否數(shù)值型數(shù)據(jù)
is.logical() 是否邏輯型數(shù)據(jù)
is.charactor() 是否字符型數(shù)據(jù)
as族函數(shù)實現(xiàn)數(shù)據(jù)類型之間的轉(zhuǎn)換
as.numeric() 將其他數(shù)據(jù)類型轉(zhuǎn)換為數(shù)值型
as.logical() 將其他數(shù)據(jù)類型轉(zhuǎn)換為邏輯型
as.charactor() 將其他數(shù)據(jù)類型轉(zhuǎn)換為字符型
多個數(shù)據(jù)如何組織?
數(shù)據(jù)結(jié)構(gòu): 向量 顽染、數(shù)據(jù)框宪祥、矩陣、列表
數(shù)據(jù)框約等于“表格”家乘。
向量則是數(shù)據(jù)框單獨拿出的一列蝗羊,視為一個整體。
一個向量只能有一種數(shù)據(jù)類型仁锯,可以有重復值耀找。
2.1向量的生成
(1)用 c()逐一放到一起
(2)連續(xù)的數(shù)字用冒號”:”
(3)有重復的用rep(),有規(guī)律的序列用seq(),隨機數(shù)用rnorm
(4)通過組合,產(chǎn)生更為復雜的向量。 paste0(rep("gene",times=3),1:3)
2.2 對單個向量進行的操作
(1)賦值給一個變量名 = 隨意寫法 <- 規(guī)范的賦值符號
(2)簡單數(shù)學計算
(3)根據(jù)某條件進行判斷,生成邏輯值向量
(4)初級統(tǒng)計 :max(x) 最大值业崖、min(x) 最小值野芒、mean(x) 均值、
? median(x) 中位數(shù)双炕、var(x) 方差狞悲、sd(x) 標準差、sum(x) 總和
2.3.對兩個向量的操作
(1)邏輯比較妇斤,生成等長的邏輯向量
x = c(1,3,5,1)
y = c(3,2,5,6)
x == y
[1] FALSE FALSE TRUE FALSE
x %in% y #x的元素是否在y中
[1] FALSE TRUE TRUE FALSE
(2)數(shù)學計算 x+y [1] 4 5 10 7
(3)連接 paste(x,y,sep=":") [1] "1:3" "3:2" "5:5" "1:1"
(4)交集摇锋、并集、差集 intersect(x,y)
站超、union(x,y)
荸恕、setdiff(x,y) #x里面有的,y沒有的
(5)x 和 y不一樣長:理解一下循環(huán)補齊 x==y
短的循環(huán)補齊死相,與前后沒有關(guān)系
paste0(rep(“gene”,3),1:3)
paste0(“gene”,1:3)
與向量x等長的邏輯值可以如何生成融求? A、比較運算 B算撮、x %in% y C生宛、用返回結(jié)果是邏輯值向量的函數(shù)
2.4.向量篩選(取子集)[]
根據(jù)邏輯值、根據(jù)位置
2.5 如何修改向量中的某個/某些元素
取子集+賦值
2.6 簡單向量作圖
k1 = rnorm(12)
k2 = rep(c("a","b","c","d"),each = 3)
plot(k1)
boxplot(k1~k2)
向量的幾個進階小問題
1.兩個不同類型的向量合并在一起會怎么樣肮柜?
2.如何將兩個向量合到一起陷舅,組成一個長向量?
x=c(1,3,5) y=c(2,3,4) test=c(x,y) test ## [1] 1 3 5 2 3 4
3.如何在向量首/尾/中間某位置增加一個元素素挽?
x=c(3,x) x=c(x,4)
如何在向量第n位增加一個元素蔑赘?
n=3 x=c(1,3,5,8,6) x ## [1] 1 3 5 8 6 y=c(x[1:n-1],7,x[n:length(x)]) y ## [1] 1 3 7 5 8 6
寫成函數(shù)
join <- function(x,n,y){ c(x[1:n-1],y,x[n:length(x)]) } x=c(1,3,5,8,6) join(x,3,7) ## [1] 1 3 7 5 8 6
4.如果向量x和y內(nèi)容一致但順序不一致狸驳,如何按照x的順序排列y预明?
x=letters[1:5] y=letters[c(3,1,2,5,4)] match(x,y) ## [1] 2 3 1 5 4 y[match(x,y)] ## [1] "a" "b" "c" "d" "e"
向量排序-match缩赛、rank、order撰糠、sort酥馍、rev
- sort 從小到大
- rev 倒序排列
- rank 返回秩次
- order 從小到大的值的位置(最小的值在哪個位置,次小的又在哪個)
- match(x,y)按照x的順序來排y