為什么要學(xué)習(xí)R語言
R語言是生物醫(yī)學(xué)科研工作者的必備技能之一削咆!學(xué)習(xí)R語言是一種性價比極高的提升自我的方式喳篇,除了幫我們作圖,完成復(fù)雜的統(tǒng)計分析之外态辛,還可以進(jìn)一步培養(yǎng)我們的科研思維麸澜。R是用于統(tǒng)計分析、繪圖的語言和操作環(huán)境奏黑。R是屬于GNU系統(tǒng)的一個自由炊邦、免費、源代碼開放的軟件熟史,它是一個用于統(tǒng)計計算和統(tǒng)計制圖的優(yōu)秀工具馁害。
大家對于R語言的抗拒,是因為習(xí)慣于圖形界面蹂匹,而難以接受以編程的方式來處理數(shù)據(jù)碘菜。正如一句老話[一切恐懼源于未知],就像我們學(xué)習(xí)一門新技能時,開始是恐懼的忍啸,但當(dāng)你逐漸掌握它時仰坦,你會開始享受它帶給你的樂趣,如此而已计雌。編程語言只是解決問題的工具悄晃,不要懼怕它,每個人都可以輕松掌握凿滤。
環(huán)境部署
首先我們下載R語言"三劍客"(R妈橄、Rstudio、Rtools)
R:可以理解為內(nèi)嵌的程序
Rstudio:非常方便的可視化窗口
Rtools:安裝R包時所依賴的工具
注意:不同版本的R語言翁脆,所依賴的Rtools版本也不一樣
RTools 4.2
for R >= 4.2.0
RTools 4.0
for R from version 4.0.0 to 4.1.3
old versions of RTools
for R versions prior to 4.0.0
安裝R
登錄 https://cran.rstudio.com/index.html ,下載R安裝包眷蚓,一路下一步即可安裝。
安裝Rstudio
登錄 https://www.rstudio.com/products/rstudio/download/ ,下載Rstudio桌面版反番,一直下一步即可安裝溪椎。
安裝Rtools
登錄 https://cran.r-project.org/bin/windows/Rtools/,下載對應(yīng)版本的Rtools安裝包恬口,一路下一步即可安裝校读。
注意:在安裝過程中不要更改路徑,否則可能會出現(xiàn)安裝之后無法使用的情況祖能。
基礎(chǔ)設(shè)置
我們安裝完成之后歉秫,不要著急去碼字,先做一些基礎(chǔ)設(shè)置养铸,規(guī)范我們使用的環(huán)境雁芙。
工作目錄
工作目錄是R語言數(shù)據(jù)輸入輸出的默認(rèn)位置,默認(rèn)狀態(tài)下是軟件的安裝時的目錄钞螟。R的很多操作兔甘,包括讀寫數(shù)據(jù),打開鳞滨、保存腳本文件洞焙,讀取保存工作空間的鏡像等都是在工作目錄中進(jìn)行的。為方便管理拯啦,在首次運行R軟件時澡匪,建立一個自己的目錄,啟動Rstudio之后將工作目錄改變到自己的目錄上褒链。
getwd() #查詢當(dāng)前的工作目錄
setwd("D:/Rworkspace") #設(shè)置工作目錄
每次使用Rstudio完成一個新的項目時唁情,建議每次都創(chuàng)建一個Rstudio Project,這樣工作目錄默認(rèn)就是項目目錄甫匹。
設(shè)置R包的安裝路徑
.libPaths("D:/Rworkspace/R_lib") #臨時設(shè)置
#永久設(shè)置
file.edit('~/.Rprofile') #新建一個初始啟動文件
.libPaths("D:/Rworkspace/R_lib") #你的路徑
myPaths <- c("D:/Rworkspace/R_lib")
.libPaths(myPaths)
保存之后甸鸟,重啟Rstudio即可
設(shè)置鏡像
國外的軟件包鏡像下載特別慢惦费,所以我們要設(shè)置國內(nèi)的鏡像
繼續(xù)在~/.Rprofile文件中輸入以下命令并保存,即可永久修改鏡像
#set Bioconductor mirror
options(BioC_mirror="https://mirrors.tuna.tsinghua.edu.cn/bioconductor")
# set a CRAN mirror
local({r <- getOption("repos")
r["CRAN"] <- "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"
options(repos=r)})
options()$repos #查看CRAN鏡像
options()$BioC_mirror #查看Bionconductor鏡像
安裝軟件包
來自CRAN的軟件包
install.packages("dplyr")
install.packages(c("dplyr","ggplot2"))
來自Bioconductor的軟件包
如果所要下載的R包不在R語言官網(wǎng)上抢韭,那它極有可能在Bioconductor或者Github上薪贫,可以先登錄Bioconductor官網(wǎng)(http://www.bioconductor.org/)搜索相關(guān)R包
if (!require("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("DESeq2")
來自github的軟件包
接下來便是安裝源自Github(https://github.com/)的R包了,它的步驟和安裝源自Bioconductor的R包類似篮绰,需要先安裝devtools包,然后用devtools包里的install_github函數(shù)來進(jìn)行安裝季惯,具體代碼如下:
install.packages('devtools')
library(devtools)
install_github('gertvv/gemtc')
#github中的R包需要在其前面加上該包所在的庫名吠各,否則無法進(jìn)行下載安裝
加載包
library(ggplot2)
快速上手
對象的賦值與運行
如果要對輸入的數(shù)據(jù)做多種分析,如計算平均數(shù)勉抓、標(biāo)準(zhǔn)差贾漏,繪制直方圖等,每次分析都要輸入數(shù)據(jù)就非常麻煩藕筋,這時纵散,可以將多個數(shù)據(jù)組合成一個數(shù)據(jù)集,并給數(shù)據(jù)集起一個名稱隐圾,然后把數(shù)據(jù)集賦值給這個名稱伍掀,這就是所謂的R對象(object)。R對象可以是一個數(shù)據(jù)集暇藏、模型蜜笤、圖形等任何東西。
R語言的標(biāo)準(zhǔn)賦值符號是"< -"盐碱,也可以使用"="賦值把兔,但推薦使用更加標(biāo)準(zhǔn)的前者。使用者可以給對象賦一個值瓮顽、一個向量县好、一個矩陣或一個數(shù)據(jù)框等。比如暖混,將5個數(shù)據(jù)20缕贡,30,40拣播,50善绎,60賦值給對象x,將數(shù)據(jù)文件data_1賦值給對象y,代碼如下。
x<- c(20,30,40,50,60)
y<- data_1
sum(x) #計算對象x的總和
mean(x) #計算對象x的平均數(shù)
barplot(x) #繪制對象x的條形圖
在上述代碼中诫尽,sum是求和函數(shù)禀酱,mean是計算平均數(shù)的函數(shù),barplot是繪制條形圖的函數(shù)牧嫉。代碼中的"#"是R軟件的注釋符號剂跟,R軟件遇到注釋符號時减途,會自動跳過#后的內(nèi)容。
舉個例子
我們先演示一個表達(dá)數(shù)據(jù)分析的例子曹洽,包括導(dǎo)入數(shù)據(jù)鳍置、數(shù)據(jù)過濾、數(shù)據(jù)變形和可視化送淆。
假設(shè)gene1在各個樣本的表達(dá)量如下
gene1_s1 <- 10
gene1_s2 <- 20
gene1_s3 <- 30
gene1_s4 <- 40
求 gene1在各個樣本中表達(dá)量之和
gene_total <- gene1_s1 + gene1_s2 + gene1_s3 + gene1_s4
gene_total
[1] 100
我們把單個元素的變量叫做標(biāo)量税产,如果有幾十個樣本,使用標(biāo)量效率太低偷崩,就需要定義向量
gene1 <- c(10,20,30,40)
gene1
[1] 10 20 30 40
求 gene1在各個樣本中表達(dá)量之和有多種辦法
方法一:循環(huán)
每次取出一條基因辟拷,累加
gene1_total <- 0
for (i in gene1){
gene1_total = gene1_total +i
}
gene1_total
[1] 100
方法二:調(diào)用函數(shù)
直接調(diào)用別人寫好的求和函數(shù)
gene1_total <- sum(gene1)
gene1_total
[1] 100
如果有幾萬條基因、幾十個樣本呢阐斜?就需要定義一個二維的數(shù)據(jù)結(jié)構(gòu)衫冻,類似excel表,這在R中可以用data.frame谒出。
讀取文件
gene_exp <- read.delim("D:/Rworkspace/data/RNA-Seq/genes.TMM.EXPR.matrix",row.names=1)
要求每一條基因表達(dá)量的和隅俘,可以對每一行進(jìn)行循環(huán),但太麻煩了笤喳,R語言有自己的想法为居。
head(apply(gene_exp, 1, sum))
ATMG00520 AT5G50650 AT3G47940 AT5G38990 AT1G25470 AT1G03740
4.076 65.271 49.491 158.257 118.060 178.846
也可以求每個樣本中所有基因表達(dá)量的和
head(apply(gene_exp,2,sum))
CER3_1 CER3_2 CER3_3 WT1 WT2 WT3
1198763.7 990273.8 880540.7 968765.7 1015728.7 972221.2
增加一個需求,求樣本之間的相關(guān)系數(shù)
sample_cor <- cor(gene_exp)
sample_cor[1:4,1:4]
CER3_1 CER3_2 CER3_3 WT1
CER3_1 1.0000000 0.9844485 0.9812532 0.9813197
CER3_2 0.9844485 1.0000000 0.9857651 0.9888231
CER3_3 0.9812532 0.9857651 1.0000000 0.9691149
WT1 0.9813197 0.9888231 0.9691149 1.0000000
畫個熱圖杀狡,這時候就需要調(diào)用別人寫好的軟件包
library(pheatmap)
pheatmap(sample_cor, cluster_rows = F, cluster_cols = F)
所以颜骤,學(xué)習(xí)一門編程語言要學(xué)習(xí)
1.怎么讀取數(shù)據(jù)?輸入輸出
2.怎么保存變量捣卤?數(shù)據(jù)結(jié)構(gòu)忍抽,如標(biāo)量、向量董朝、數(shù)據(jù)框
3.保存成數(shù)字還是字符鸠项?變量類型
4.怎么進(jìn)行運算?計算子姜、函數(shù)祟绊、流程控制
5.怎么進(jìn)行繪圖?
編寫代碼腳本
R代碼雖然可以在提示符后輸入哥捕,但如果輸入的代碼較多牧抽,難免出現(xiàn)輸入錯誤。如果代碼輸入錯誤或書寫格式錯誤遥赚,運行后扬舒,Rstudio軟件會出現(xiàn)錯誤提示或警告信息。這時凫佛,在Rstudio界面中修改錯誤的代碼比較麻煩讲坎,也不利于保存代碼孕惜。因此,R代碼最好是在腳本文件(Rmarkdown , R script)中編寫晨炕,編寫完成后衫画,選中輸入的代碼,并單擊鼠標(biāo)右鍵瓮栗,選擇“運行當(dāng)前行或所選代碼”削罩,即可在R軟件中運行該代碼并得到相應(yīng)結(jié)果。腳本文件可保持到指定目錄下费奸,下次使用時弥激,可直接打開腳本。
查看幫助文件
R軟件的所有計算和繪圖均可以由R函數(shù)完成货邓,這些函數(shù)通常來自不同的R包秆撮,每個R包和函數(shù)都有相應(yīng)的幫助說明四濒。在使用中遇到疑問時换况,可以隨時查看幫助文件。比如盗蟆,要想了解sum函數(shù)和stats包的功能及使用方法戈二,可使用help(函數(shù)名)或“?函數(shù)名”查詢喳资。直接輸入函數(shù)名觉吭,可以看到該函數(shù)的源代碼(封裝函數(shù)除外)。
help(sum) #查看sum函數(shù)的幫助信息
help(packages=stats) #查看stats包的信息
var #查看var函數(shù)的源代碼
學(xué)會提問
我們在學(xué)習(xí)的過程中會遇到各種各樣的問題仆邓,這些問題鲜滩,大多數(shù)情況下別人也碰到過一樣的問題。所要學(xué)會使用搜索引擎(谷歌节值,必應(yīng)徙硅,百度等等)。一般來說直接檢索報錯信息+R關(guān)鍵詞就能找到答案搞疗。如果在自己絞盡腦汁嗓蘑,查詢了各大搜索引擎之后,仍然不能找到答案匿乃,這個時候就可以向別人提問了:
一個優(yōu)秀的提問桩皿,他可以指引被提問對象說出關(guān)鍵的信息,并且循序漸進(jìn)的做出需要的補充內(nèi)容幢炸。如果沒有提問者詳細(xì)的描述和認(rèn)真的思考泄隔,可能這個問題不知道還要經(jīng)歷多少個來回才能被討論清楚。-- via 思考問題的熊
如果自己沒有思考宛徊,沒有去尋找解決問題的方法梅尤,就去向別人提問 柜思。我覺得這是一種不負(fù)責(zé)任的行為,即浪費了別人的時間巷燥,也浪費了自己的時間赡盘。