R語言畢竟是最強(qiáng)大的編程語言其兴,可實(shí)現(xiàn)統(tǒng)計(jì)和數(shù)據(jù)可視化的功能顶瞒。在之前我們專門介紹過幾種熱圖繪制工具,其實(shí)在生信領(lǐng)域中大多數(shù)熱圖真的可以直接用R語言就能實(shí)現(xiàn)元旬。
R是一種區(qū)分大小寫的解釋型語言榴徐。我們可以在命令提示符(>)后每次輸入并執(zhí)行一條命令,或者一次性執(zhí)行寫在腳本文件中的一組命令匀归。R中有多種數(shù)據(jù)類型坑资,包括向量、矩陣穆端、數(shù)據(jù)框和列表袱贮。R中的多數(shù)功能是由程序內(nèi)置函數(shù)和用戶自編函數(shù)提供的,一次交互式會(huì)話期間的所有數(shù)據(jù)對(duì)象都被保存在內(nèi)存中体啰。一些基本函數(shù)是默認(rèn)直接可用攒巍,其他高級(jí)函數(shù)則包含于按需加載的程序包中嗽仪。
R語句由函數(shù)和賦值構(gòu)成。R使用<-柒莉,而不是傳統(tǒng)的=作為賦值符號(hào)闻坚。
今天小編就先從R語言基礎(chǔ),即R的安裝兢孝、R的載入和數(shù)據(jù)導(dǎo)入開始講起鲤氢,往后將繼續(xù)介紹如何用R語言做深入的數(shù)據(jù)分析。
安裝R和RStudio
R可在CRAN上免費(fèi)下載西潘。建議先安裝R包,再安裝RStudio哨颂。Linux喷市、Mac?OSX和Windows都有相應(yīng)編譯好的二進(jìn)制版本,根據(jù)你選擇平臺(tái)的安裝說明進(jìn)行安裝即可威恼。RStudio是目前最受歡迎的R集成開發(fā)環(huán)境品姓,體驗(yàn)效果極佳。而且RStudio上面提供了很多R學(xué)習(xí)資源箫措,可點(diǎn)擊菜單欄查看免費(fèi)獲取腹备。
R提供了很多種功能,而且這些功能通過可選模塊的下載和安裝來實(shí)現(xiàn)的斤蔓。這些包提供了橫跨各種領(lǐng)域的功能植酥,包括分析地理數(shù)據(jù)、處理蛋白質(zhì)質(zhì)譜等弦牡。
那什么是包呢友驮?包是R函數(shù)、數(shù)據(jù)驾锰、預(yù)編譯代碼以一種定義完善的格式組成的集合卸留。庫library中存儲(chǔ)了很多包。函數(shù).libPaths()可顯示庫所在位置椭豫,函數(shù)library()則可顯示庫中有哪些包耻瑟。
R自帶了一系列默認(rèn)包(base、datasets赏酥、utils喳整、grDevices、graphics今缚、stats算柳、methods),它們提供了很多種默認(rèn)函數(shù)和數(shù)據(jù)集姓言。安裝好后瞬项,它們必須被載入到會(huì)話中才能用蔗蹋。命令search()可顯示哪些包已加載并可使用。
安裝R包
R包是R函數(shù)囱淋、數(shù)據(jù)猪杭、預(yù)編譯代碼以一種定義完善的格式組成的集合。其實(shí)在安裝R軟件時(shí)妥衣,R會(huì)自動(dòng)安裝一些基礎(chǔ)R包皂吮,基礎(chǔ)R包提供了很多默認(rèn)函數(shù)和數(shù)據(jù)集,其他大多數(shù)R包需要手動(dòng)安裝税手,例如ggplot2包等蜂筹。第一次安裝一個(gè)包,使用命令install.packages()即可芦倒。如果不加參數(shù)執(zhí)行install.packages()將顯示一個(gè)CRAN鏡像站點(diǎn)的列表艺挪,選擇其中一個(gè)鏡像站點(diǎn)之后,將看到所有可用包的列表兵扬,選擇其中的一個(gè)包即可進(jìn)行下載和安裝麻裳。
R包可從三種途徑安裝。
CRAN
安裝R包可以從CRAN上安裝器钟,只需在命令行輸入代碼install. packages(“package_name”)即可津坑。
例如,安裝readr包傲霸,可以這樣輸入
Install.packages(“readr”)
Bioconductor
在Bioconductor上安裝R包疆瑰。Bioconductor數(shù)據(jù)庫存儲(chǔ)了專用于生信領(lǐng)域的R包。在Bioconductor上安裝R包可參考其官網(wǎng)的安裝方法昙啄,操作跟CRAN上類似乃摹。
例如從Bioconductor安裝用于分析基因組數(shù)據(jù)的R/Bioconductor包limma,可以輸入:
Source(https://bioconductor.org/biocLite.R)
biocLite(“l(fā)imma”)
也可以使用Biocmanager:install(“l(fā)imma”)這種形式
Github
另外可從github安裝R包跟衅,github適用于所有軟件開發(fā)和數(shù)據(jù)分析的資源庫孵睬,以便共享你的包。
對(duì)于github上安裝一個(gè)包伶跷,首先應(yīng)安裝devtools包在你電腦上掰读。例如可輸入下面代碼安裝最新版本的survminer的R包
install.packages(“devtools”)
devtools::install_github(“kassambara/survminer”)
R包的載入
包的安裝就是從某個(gè)CRAN鏡像站點(diǎn)下載它并將其放入庫中的過程。要在R會(huì)話中使用包叭莫,還需使用library()命令載入這個(gè)包蹈集。載入一個(gè)包后,就可用一系列新的函數(shù)和數(shù)據(jù)集了雇初。包提供了演示性的小型數(shù)據(jù)集和示例代碼拢肆,能讓我們嘗試這些新功能。
R與數(shù)據(jù)導(dǎo)入
當(dāng)你獲取到來自多種數(shù)據(jù)源和數(shù)據(jù)格式的數(shù)據(jù)時(shí),R就提供了適用范圍廣泛的數(shù)據(jù)導(dǎo)入工具郭怪。R可從鍵盤支示、文本文件、Microsoft?Excel和Access鄙才、統(tǒng)計(jì)軟件颂鸿、特殊格式文件,及多種關(guān)系型數(shù)據(jù)庫中導(dǎo)入數(shù)據(jù)攒庵。
使用鍵盤輸入數(shù)據(jù)
R中的函數(shù)edit()自動(dòng)調(diào)用一個(gè)允許手動(dòng)輸入數(shù)據(jù)的文本編輯器嘴纺。具體步驟如下:
創(chuàng)建一個(gè)空的數(shù)據(jù)框,其中變量名稱和變量模式與理想中的最終數(shù)據(jù)集一致浓冒。
針對(duì)這個(gè)數(shù)據(jù)對(duì)象調(diào)用文本編輯器栽渴,輸入你的數(shù)據(jù),將結(jié)果保存回這個(gè)數(shù)據(jù)對(duì)象中稳懒。
例如熔萧,我們創(chuàng)建一個(gè)名為mydata的數(shù)據(jù)框,它有三個(gè)變量:age(數(shù)值型)僚祷、gender(字符型)、weight(數(shù)值型)贮缕,我們?cè)賹⒄{(diào)用文本編輯器辙谜,鍵入數(shù)據(jù),最后保存結(jié)果感昼。
mydata <- data.frame(age=numeric(0) ,
????gender=character (0), weight=numeric (0) )
mydata <- edit (mydata)
類似于age=numeric(0)的賦值語句將創(chuàng)建一個(gè)指定模式但不含實(shí)際數(shù)據(jù)的變量装哆。edit()函數(shù)其實(shí)是在對(duì)象的一個(gè)副本上進(jìn)行操作。
從帶分隔符的文本文件導(dǎo)入數(shù)據(jù)
我們可用read.table()從帶分隔符的文本文件中導(dǎo)入數(shù)據(jù)定嗓。此函數(shù)可讀入一個(gè)表格格式的文件并將其保存為一個(gè)數(shù)據(jù)框蜕琴。
mydataframe?<- read.table(file, ?header=logical_value,
?????sep=”delimiter”, ?row.names=”name”)
其中,file是一個(gè)帶分隔符的ASCII文本文件宵溅,header是一個(gè)表明首行是否包含了變量名的邏輯值(TRUE或FALSE)凌简,sep用來指定分隔數(shù)據(jù)的分隔符,row.names是一個(gè)可選參數(shù)恃逻,用以指定一個(gè)或多個(gè)表示行標(biāo)識(shí)符的變量雏搂。
grades <- read.table(“studentgrades.csv”, ?header=TRUE, ?sep=”,”,
?????row.names=”STUDENTID”)
函數(shù)read.table()還擁有很多微調(diào)數(shù)據(jù)導(dǎo)入方式的追加選項(xiàng),如quote參數(shù)用于控制導(dǎo)入的信息是否需要被雙引號(hào)引用寇损,dec參數(shù)控制導(dǎo)入數(shù)據(jù)的小數(shù)點(diǎn)后位數(shù)等凸郑,某些情況下導(dǎo)入被空格分離的字符串如“Bcellresting”,會(huì)被自動(dòng)轉(zhuǎn)化為“B.cell.resting”形式矛市,這種情況下可設(shè)置Check.names參數(shù)芙沥。一般而言,txt文件以制表符“\t”作為分隔符,與excel的csv格式中的逗號(hào)分隔稍有不同而昨。
導(dǎo)入Excel數(shù)據(jù)
讀取一個(gè)Excel文件夾的最好方式救氯,就是在Excel中將其導(dǎo)出為一個(gè)逗號(hào)分隔文件(csv),然后再將其導(dǎo)入R中配紫。在Windows系統(tǒng)里径密,可用RODBC包來方位Excel文件。
首先躺孝,下載并安裝RODBC包享扔。
install.packages(“RODBC”)
可使用下面代碼導(dǎo)入數(shù)據(jù):
library(RODBC)
channel <- odbcConnectExcel (“myfile.xls”)
mydataframe <- sqlFetch(channel, ?“mysheet”)
odbcClose(channel)
其中,myfile.xls是一個(gè)Excel文件植袍,mysheet是要從這個(gè)工作簿中讀取工作表的名稱惧眠,channel是一個(gè)由odbcConnectExcel()返回的RODBC連接對(duì)象,mydataframe是返回的數(shù)據(jù)框于个。RODBC也可用于從Access中導(dǎo)入數(shù)據(jù)氛魁。
導(dǎo)入SPSS數(shù)據(jù)
SPSS數(shù)據(jù)集可通過foreign包中的函數(shù)read.spss()導(dǎo)入到R中,也可用Hmisc包中的spss.get()函數(shù)厅篓。函數(shù)spss.get()是對(duì)read.spss()的一個(gè)封裝秀存,它可自動(dòng)設(shè)置后者的很多參數(shù)。
首先羽氮,下載并安裝Hmisc包
install.package(“Hmisc”)
然后使用以下代碼導(dǎo)入數(shù)據(jù):
library(Hmisc)
mydataframe <- spss.get (“mydata.sav”, ?use.value.labels=TRUE)
這段代碼中或链,mydata.sav是要導(dǎo)入的SPSS數(shù)據(jù)文件,use.value.labels=TRUE表示讓函數(shù)將帶有值標(biāo)簽的變量導(dǎo)入為R中水平對(duì)應(yīng)相同的因子档押,mydataframe是導(dǎo)入后的R數(shù)據(jù)框澳盐。
導(dǎo)入SAS數(shù)據(jù)
R中設(shè)計(jì)了若干用來導(dǎo)入SAS數(shù)據(jù)集的函數(shù),包括foreign包中的read.ssd()和Hmisc包中的sas.get()令宿。
我們可以在SAS中使用PROC EXPORT將SAS數(shù)據(jù)集保存為一個(gè)逗號(hào)分隔的文本文件叼耙,然后將導(dǎo)出的文件讀取到R中。如下所示:
SAS程序中:
proc export data=mydata
?????????outfile=”mydata.csv”
?????????dbms=csv;
run;
R程序:
Mydata <- read.table(“mydata.csv”, ?header=TRUE, ?sep=”,”)
導(dǎo)入STATA數(shù)據(jù)
將Stata數(shù)據(jù)導(dǎo)入R的代碼類似于:
Library(foreign)
Mydataframe <- read.dta (“mydata.dta”)
R與數(shù)據(jù)導(dǎo)出
除了可以把數(shù)據(jù)導(dǎo)入R中粒没,還可從R中把數(shù)據(jù)導(dǎo)出筛婉,以便保存數(shù)據(jù)或在外部程序中使用。那怎樣從R中導(dǎo)出數(shù)據(jù)呢癞松?
符號(hào)分隔文本文件
可用write.table()函數(shù)將R對(duì)象輸出到符號(hào)分隔文件中倾贰。函數(shù)使用方法是:
write.table(x, ?outfile, ?sep=delimiter, ?quote=TRUE, ??na=”NA”)
其中x是輸出對(duì)象,outfile是目標(biāo)文件拦惋。例如匆浙,
write.table(mydata, ??“mydata.txt”, ??sep=”,”)
將mydata數(shù)據(jù)集輸出到當(dāng)前目錄下逗號(hào)分隔的mydata.txt文件。用路徑將輸出文件保存到任何地方厕妖。用sep=”\t”替換sep=”,”首尼,數(shù)據(jù)就會(huì)保存到制表符分隔的文件中。默認(rèn)情況下,字符串是放在雙引號(hào)中软能,缺失值用NA表示迎捺。
Excel表格
xlsx包中的write.xlsx()函數(shù)可將R數(shù)據(jù)框?qū)懭氲紼xcel文件中。使用方法是
library(xlsx)
write.xlsx(x, ?outfile, ?col.Names=TRUE, ?row.names=TRUE,
????????????????????????sheetName=”Sheet 1”, ??append=FALSE)
例如查排,
library(xlsx)
write.xlsx(mydata, ?“mydata.xlsx”)
將mydata數(shù)據(jù)框保存到當(dāng)前目錄下的Excel文件mydata.xlsx的工作表中(默認(rèn)為Sheet 1)凳枝。在這種情況下,數(shù)據(jù)集的變量名稱被作為電子表格頭部跋核,行名稱會(huì)放在電子表格的第一列岖瑰。函數(shù)會(huì)覆蓋已存在的mydata.xlsx文件。
統(tǒng)計(jì)學(xué)程序
foreign包中的write.foreign()可將數(shù)據(jù)框?qū)С龅酵獠拷y(tǒng)計(jì)軟件砂代,會(huì)創(chuàng)建兩個(gè)文件蹋订,一個(gè)是保存數(shù)據(jù)的文本文件,另一個(gè)是指導(dǎo)外部統(tǒng)計(jì)軟件導(dǎo)入數(shù)據(jù)的編碼文件刻伊。
write.foreign(dataframe, ?datafile, ?codefile, ?package=package)
例如露戒,看下面這段代碼:
library(foreign)
write.foreign(mydata, ?“mydata.txt”, ?“mycode.sps”, ??package=”SPSS”)
將mydata數(shù)據(jù)框?qū)С龅疆?dāng)前目錄的純文本文件mydata.txt中,同時(shí)還會(huì)生成一個(gè)用于讀取該文本文件的SPSS程序mycode.sps捶箱。
Package參數(shù)的其他值還有“SAS”和“Stata”
結(jié)語
今天跟大家介紹了R的安裝智什、R的載入和數(shù)據(jù)導(dǎo)入導(dǎo)出,這些還是最基礎(chǔ)的東西丁屎,其實(shí)安裝R和載入R包并不復(fù)雜荠锭,關(guān)鍵就在于數(shù)據(jù)處理分析。數(shù)據(jù)的準(zhǔn)備可能是數(shù)據(jù)分析中最具挑戰(zhàn)性的任務(wù)之一悦屏,R提供了豐富函數(shù)用以訪問外部數(shù)據(jù),包括統(tǒng)計(jì)軟件键思、數(shù)據(jù)庫等的數(shù)據(jù)础爬,換言之我們做統(tǒng)計(jì)學(xué)分析和繪圖都需要使用R語言,所以我們對(duì)R語言的運(yùn)用一定要了如指掌吼鳞,對(duì)于生信小白來說看蚜,平時(shí)沒事做,就不要打王者赔桌,就把娛樂時(shí)間拿來反復(fù)練習(xí)運(yùn)用R語言供炎。