1.數(shù)據(jù)類型
數(shù)值型:可以是整數(shù)、小數(shù)、科學(xué)計(jì)數(shù)的方式。默認(rèn)為雙精度型數(shù)據(jù)
字符型:以雙引號(hào)或單引號(hào)夾起來的數(shù)據(jù),如"a" ‘a(chǎn)’。
邏輯型:有TRUE和FALSE、NA。

常見報(bào)錯(cuò):引號(hào)、拼寫錯(cuò)誤、大小寫
> class(a) Error: object 'a' not found (缺少引號(hào))
> calss("a") Error in calss("a") : could not find function "calss"( 拼寫錯(cuò)誤)
> class(true) Error: object 'true' not found( 大小寫)
> class(TURE) Error: object 'TURE' not found 拼寫錯(cuò)誤)
> class(3)Error: unexpected input in "class?(中文括號(hào))
2.邏輯型數(shù)據(jù)
比較運(yùn)算的結(jié)果是邏輯值
>, <, <=, >=, ==, !=
3==5 ····· FALSE
3!=4·······TRUE
邏輯運(yùn)算 多個(gè)邏輯條件的連接與&、或|、非!
3<5&4>5·····TRUE
3<5|4>5·······FALSE
!4>5············TRUE
3.數(shù)據(jù)類型的判斷和轉(zhuǎn)化
(1)is族函數(shù),判斷,返回值為TRUE或 FALSE
is.numeric() 是否數(shù)值型數(shù)據(jù) > is.numeric("4") [1] FALSE
is.logical() 是否邏輯型數(shù)據(jù)
is,character()是否字符型數(shù)據(jù)
(2)as族函數(shù)實(shí)現(xiàn)數(shù)據(jù)類型之間的轉(zhuǎn)換
as.numeric() 將其他數(shù)據(jù)類型轉(zhuǎn)換為數(shù)值型> as.numeric("4") [1] 4
as.logical() 將其他數(shù)據(jù)類型轉(zhuǎn)換為邏輯型
as.character() 將其他數(shù)據(jù)類型轉(zhuǎn)換為字符型
4.多個(gè)數(shù)據(jù)如何組織
? 數(shù)據(jù)框約等于“表格”。
? 向量則是數(shù)據(jù)框單獨(dú)拿出的一列,視為一個(gè)整體。

5. 向量的生成
(1)用 c()逐一放到一起
> c(2,5,6,2,9)
[1] 2 5 6 2 9
> c("a","f","md","b")
[1] "a" "f" "md" "b"
(2)連續(xù)的數(shù)字用冒號(hào)”:”
> 1:5
[1] 1 2 3 4 5
(3)有重復(fù)的用rep(),有規(guī)律的序列用seq(),隨機(jī)數(shù)用rnorm()
> rep("gene",times=3)
[1] "gene" "gene" "gene"
> seq(from=3,to=21,by=3)
[1] 3 6 9 12 15 18 21
> rnorm(n=3)
[1] -1.2882504 -0.8186668 -0.1031025
(4)通過組合,產(chǎn)生更為復(fù)雜的向量。>paste0(rep("gene",times=3),1:3)
[1] "gene1" "gene2" "gene3"
6.對(duì)單個(gè)向量進(jìn)行的操作
(1)賦值給一個(gè)變量名
x = c(1,3,5,6,2) #隨意的寫法
x
x <- c(1,3,5) #規(guī)范的賦值符號(hào)
x
(2)簡(jiǎn)單數(shù)學(xué)計(jì)算
> x+1 [1] 2 4 6 2
> log(x) [1] 0.000000 1.098612 1.609438 0.000000
> sqrt(x) [1] 1.000000 1.732051 2.236068 1.000000
(3)根據(jù)某條件進(jìn)行判斷,生成邏輯值向量
> x>3
[1] FALSE FALSE TRUE FALSE
> x==3
[1] FALSE TRUE FALSE FALSE
(4)初級(jí)統(tǒng)計(jì)
max(x) #最大值
min(x) #最小值
mean(x) #均值
median(x) #中位數(shù)
var(x) #方差
sd(x) #標(biāo)準(zhǔn)差
sum(x)#總和
>length(x) #長(zhǎng)度
[1] 4
> unique(x) #去重復(fù)
[1] 1 3 5
> duplicated(x)
[1] FALSE FALSE FALSE TRUE
> table(x) #重復(fù)值統(tǒng)計(jì)x
1 3 5 2 1 1
> sort(x)
[1] 1 1 3 5
7.對(duì)兩個(gè)向量的操作
x = c(1,3,5,1)
y = c(3,2,5,6)
(1)邏輯比較,生成等長(zhǎng)的邏輯向量
x == y
[1] FALSE FALSE TRUE FALSE
x %in% y #x的元素是否在y中
[1] FALSE TRUE TRUE FALSE
(2)數(shù)學(xué)計(jì)算
x + y
[1] 4 5 10 7
(3)連接
paste(x,y,sep=":")
[1] "1:3" "3:2" "5:5" "1:6"
(4)交集、并集、差集
intersect(x,y)
[1] 3 5
union(x,y)
[1] 1 3 5 2 6
setdiff(x,y)
[1] 1
setdiff(y,x)
[1] 2 6
8.x 和 y不一樣長(zhǎng):理解一下循環(huán)補(bǔ)齊

利用循環(huán)補(bǔ)齊簡(jiǎn)化代碼
paste0(rep(“gene”,3),1:3)
paste0(“gene”,1:3)
## [1] "gene1" "gene2" "gene3"

9.向量篩選(取子集)
** [ ]:將TRUE對(duì)應(yīng)的值挑選出來,F(xiàn)ALSE丟棄**


10.如何修改向量中的某個(gè)/某些元素?
x <- c( 8 9 10 11 12); x
[1] 8 9 10 11 12> # 改變一個(gè)元素
> x[4] <- 40
> x[1] 8 9 10 40 12
> # 改變多個(gè)元素
> x[c(1,5)] <- c(80,20)
> x[1] 80 9 10 40 20
11.向量匹配排序-match
x <- c("A","B","C","D","E")
y <- c("B","D","E","A","C")
match(x,y)
#[1] 4 1 5 2 3
y[match(x,y)]
#[1] "A" "B" "C" "D" "E"
x[match(y,x)]
#[1] "B" "D" "E" "A" "C"
