干貨丨零基礎(chǔ)如何學(xué)習(xí) R 語言托享?

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語言供炎。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市疾党,隨后出現(xiàn)的幾起案子音诫,更是在濱河造成了極大的恐慌,老刑警劉巖雪位,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竭钝,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)香罐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門卧波,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人庇茫,你說我怎么就攤上這事港粱。” “怎么了旦签?”我有些...
    開封第一講書人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵查坪,是天一觀的道長。 經(jīng)常有香客問我顷霹,道長咪惠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任淋淀,我火速辦了婚禮遥昧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘朵纷。我一直安慰自己炭臭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開白布袍辞。 她就那樣靜靜地躺著鞋仍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搅吁。 梳的紋絲不亂的頭發(fā)上威创,一...
    開封第一講書人閱讀 48,954評(píng)論 1 283
  • 那天,我揣著相機(jī)與錄音谎懦,去河邊找鬼肚豺。 笑死,一個(gè)胖子當(dāng)著我的面吹牛界拦,可吹牛的內(nèi)容都是我干的吸申。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼享甸,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼截碴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蛉威,我...
    開封第一講書人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤日丹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蚯嫌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體聚凹,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡割坠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了妒牙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片彼哼。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖湘今,靈堂內(nèi)的尸體忽然破棺而出敢朱,到底是詐尸還是另有隱情,我是刑警寧澤摩瞎,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布拴签,位于F島的核電站,受9級(jí)特大地震影響旗们,放射性物質(zhì)發(fā)生泄漏蚓哩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一上渴、第九天 我趴在偏房一處隱蔽的房頂上張望岸梨。 院中可真熱鬧,春花似錦稠氮、人聲如沸曹阔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赃份。三九已至,卻和暖如春奢米,著一層夾襖步出監(jiān)牢的瞬間抓韩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來泰國打工鬓长, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谒拴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓痢士,卻偏偏與公主長得像彪薛,于是被迫代替她去往敵國和親茂装。 傳聞我的和親對(duì)象是個(gè)殘疾皇子怠蹂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

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