R的安裝與使用(基礎(chǔ))

為什么要學(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é)任的行為,即浪費了別人的時間巷燥,也浪費了自己的時間赡盘。

最后希望大家都能熟練的使用R語言。

歡迎關(guān)注Bioinfor 生信云 微信公眾號缰揪!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末陨享,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子钝腺,更是在濱河造成了極大的恐慌抛姑,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艳狐,死亡現(xiàn)場離奇詭異定硝,居然都是意外死亡,警方通過查閱死者的電腦和手機毫目,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門蔬啡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人镀虐,你說我怎么就攤上這事箱蟆。” “怎么了刮便?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵空猜,是天一觀的道長。 經(jīng)常有香客問我恨旱,道長辈毯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任搜贤,我火速辦了婚禮谆沃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘入客。我一直安慰自己管毙,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布桌硫。 她就那樣靜靜地躺著夭咬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪铆隘。 梳的紋絲不亂的頭發(fā)上卓舵,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機與錄音膀钠,去河邊找鬼掏湾。 笑死裹虫,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的融击。 我是一名探鬼主播筑公,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼尊浪!你這毒婦竟也來了匣屡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤拇涤,失蹤者是張志新(化名)和其女友劉穎捣作,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鹅士,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡券躁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了掉盅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片也拜。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖怔接,靈堂內(nèi)的尸體忽然破棺而出搪泳,到底是詐尸還是另有隱情稀轨,我是刑警寧澤扼脐,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站奋刽,受9級特大地震影響瓦侮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜佣谐,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一肚吏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧狭魂,春花似錦罚攀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至镐牺,卻和暖如春炫掐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背睬涧。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工募胃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留旗唁,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓痹束,卻偏偏與公主長得像检疫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子祷嘶,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容