2021-08-03第二天學(xué)R語言( 數(shù)據(jù)類型和向量)

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。

image.png

常見報(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è)整體。

? 一個(gè)向量只能有一種數(shù)據(jù)類型,可以有重復(fù)值。
image.png

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ǔ)齊

image.png

利用循環(huán)補(bǔ)齊簡(jiǎn)化代碼

paste0(rep(“gene”,3),1:3)
paste0(“gene”,1:3)
##  [1] "gene1"  "gene2"  "gene3"
image.png

9.向量篩選(取子集)

** [ ]:將TRUE對(duì)應(yīng)的值挑選出來,F(xiàn)ALSE丟棄**


image.png

image.png

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"
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容