??R語言是數(shù)學(xué)研究工作者設(shè)計(jì)的一種數(shù)學(xué)編程語言,主要用于統(tǒng)計(jì)分析、繪圖、數(shù)據(jù)挖掘。R語言是解釋運(yùn)行的語言(與C語言的編譯運(yùn)行不同),它的執(zhí)行速度比C語言慢得多,不利于優(yōu)化。但它在語法層面提供了更加豐富的數(shù)據(jù)結(jié)構(gòu)操作并且能夠十分方便地輸出文字和圖形信息,所以它廣泛應(yīng)用于數(shù)學(xué)尤其是統(tǒng)計(jì)學(xué)領(lǐng)域。這也是大多數(shù)生信工作者選擇R語言的原因。
3. 數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)
-
數(shù)據(jù)類型:數(shù)據(jù)類型指的是用于聲明不同類型的變量或函數(shù)的一個(gè)廣泛的系統(tǒng)。變量的類型決定了變量存儲占用的空間,以及如何解釋存儲的位模式;
- R 語言中的最基本數(shù)據(jù)類型主要有三種:
- 數(shù)字
- 邏輯
- 文本
- R 語言中的最基本數(shù)據(jù)類型主要有三種:
a = 1
b <- TRUE
d = "abc"
class(a)
class(b)
class(d)
-
數(shù)據(jù)結(jié)構(gòu):
R擁有許多用于存儲數(shù)據(jù)的對象類型,包括標(biāo)量、向量、矩陣、數(shù)組、數(shù)據(jù)框和列表。它們在存儲數(shù)據(jù)的類型、創(chuàng)建方式、結(jié)構(gòu)復(fù)雜度,以及用于定位和訪問其中個(gè)別元素的標(biāo)記等方面均有所不同。圖2-1給出了這些數(shù)據(jù)結(jié)構(gòu)的一個(gè)示意圖。
<img src=".\Figures\WechatIMG581.jpeg" alt="WechatIMG581" style="zoom:50%;" />
-
向量:
-
a <- c(1,2,5,3,6,-2,4) b <- c("one", "two", "three") d <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE) # 由于R中內(nèi)置了同名函數(shù)c(),最好不要在編碼時(shí)使用c作為對象名,否則可能產(chǎn)生一些不易察覺的問題。這里:a是數(shù)值型向量,b是字符型向量,而c是邏輯型向量。
注意:單個(gè)向量中的數(shù)據(jù)必須擁有相同的類型或模式(數(shù)值型、字符型或邏輯型) 。同一向量中無法混雜不同模式的數(shù)據(jù)。
-
-
與向量相關(guān)的常用操作:
# 快速創(chuàng)建連續(xù)數(shù)列: a <- c(1:10) # seq函數(shù)創(chuàng)建數(shù)列: a <- seq(1,10,2) # seq(from = value1 ,to = value2 , by = step) # 重復(fù)函數(shù)rep: rep(x,times = value1) # 即表示將x重復(fù)value1次。
-
訪問向量中的元素:
-
通過在方括號中給定元素所處位置的數(shù)值, 我們可以訪問向量中的元素。
例如, a[c(2, 4)] 用于訪問向量a中的第二個(gè)和第四個(gè)元素。
a <- c(1,2,5,3,6,-2,4) a[3] a[c(1,3,4)] a[2:6] -
-
修改向量中的元素:
# 創(chuàng)建向量 x <- c(1,2,24) x # 修改向量中的元素 x[c(1,3)] <- c(23,43) x # 負(fù)號表示刪除元素 x <- c(1:10) x[-(1:5)]
-
進(jìn)階:
- 字符型元素即用雙引號括起來的元素,如"beautiful",“handsome”,“er”,諸如此類,這里我們主要講一個(gè)paste函數(shù),將字符型變量給合并成一個(gè)字符串,形式為:
paste(“variable1”,”variable2",…,sep=’ ',collapse=NULL) - 其中sep參數(shù)是指變量和變量之間的連接,默認(rèn)為空字符,collapse參數(shù)是指合并過后的元素之間的連接,默認(rèn)為空,
# 我們簡單的舉幾個(gè)例子就很清晰了: a <- paste("a","b","c",1:3,sep = '') a b <- paste("a","b","c",1:3,sep = '+') b c <- paste("a","b","c",1:3,sep = '+',collapse = '----') c # 我們發(fā)現(xiàn)若是給定collapse一個(gè)參數(shù)就會變成一整個(gè)合并的字符串,默認(rèn)的話就是一個(gè)一個(gè)合并過后地元素??梢钥碽和c的區(qū)別。- 向量相關(guān)的運(yùn)算:
# 取向量中最小最大的值: min() max() # 求的是取得最?。ù螅┲档牡趲讉€(gè)分量 which.min() which.max() sum() # 求和 median() # 求中位數(shù) prod() # 求積 var() # 方差、 mean() # 平均值等 sort() # 給x排序,默認(rèn)遞增 rev() # 倒序 order() # 給出遞增的序列號 a[order(a)]??本期內(nèi)容就到這里,喜歡的小伙伴還請幫忙點(diǎn)贊、關(guān)注和轉(zhuǎn)發(fā),你們的支持是我們更新的動力。
- 字符型元素即用雙引號括起來的元素,如"beautiful",“handsome”,“er”,諸如此類,這里我們主要講一個(gè)paste函數(shù),將字符型變量給合并成一個(gè)字符串,形式為: