R語言初步 統(tǒng)計(jì)繪圖與編程.ppt_第1頁
R語言初步 統(tǒng)計(jì)繪圖與編程.ppt_第2頁
R語言初步 統(tǒng)計(jì)繪圖與編程.ppt_第3頁
R語言初步 統(tǒng)計(jì)繪圖與編程.ppt_第4頁
R語言初步 統(tǒng)計(jì)繪圖與編程.ppt_第5頁
已閱讀5頁,還剩119頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、1,語言初步,張金龍 June 3, 2010, 數(shù)據(jù)處理、繪圖與編程,2,報(bào)告內(nèi)容,一 R簡介 二 函數(shù)與對象 三 腳本編程 四 R繪圖 五 編寫函數(shù) 六 數(shù)據(jù)保存,3,一 R 簡介,4,什么是R?,圖1 R首頁的圖形 R是一種統(tǒng)計(jì)繪圖語言,也指實(shí)現(xiàn)該語言的軟件。,The R Project for Statistical Computing,5,簡 史,R語言是從S統(tǒng)計(jì)繪圖語言演變而來,可看作S的“方言”。 S語言上世紀(jì)70年代誕生于貝爾實(shí)驗(yàn)室,由Rick Becker, John Chambers, Allan Wilks開發(fā)。 基于S語言開發(fā)的商業(yè)軟件Splus,可以方便的編寫函數(shù)、建

2、立模型,具有良好的擴(kuò)展性,在國外學(xué)術(shù)界應(yīng)用很廣。 1995年由新西蘭Auckland大學(xué)統(tǒng)計(jì)系的Robert Gentleman和Ross Ihaka,基于S語言的源代碼,編寫了一能執(zhí)行S語言的軟件,并將該軟件的源代碼全部公開,這就是R軟件,其命令統(tǒng)稱為R語言。,6,R的特點(diǎn),多領(lǐng)域的統(tǒng)計(jì)資源 目前在R網(wǎng)站上約有2400個(gè)程序包,涵蓋了基礎(chǔ)統(tǒng)計(jì)學(xué)、社會學(xué)、經(jīng)濟(jì)學(xué)、生態(tài)學(xué)、空間分析、系統(tǒng)發(fā)育分析、生物信息學(xué)等諸多方面。 跨平臺 R可在多種操作系統(tǒng)下運(yùn)行,如Windows、MacOS、多種Linux和UNIX等。 命令行驅(qū)動 R即時(shí)解釋,輸入命令,即可獲得相應(yīng)的結(jié)果。,7,為什么選擇R?,豐富的資

3、源 涵蓋了多種行業(yè)數(shù)據(jù)分析中幾乎所有的方法。 良好的擴(kuò)展性 十分方便得編寫函數(shù)和程序包,跨平臺,可以勝任復(fù)雜的數(shù)據(jù)分析、繪制精美的圖形。 完備的幫助系統(tǒng) 每個(gè)函數(shù)都有統(tǒng)一格式的幫助,運(yùn)行實(shí)例。 GNU軟件 免費(fèi)、軟件本身及程序包的源代碼公開。,8,R與其他統(tǒng)計(jì)軟件比較,SAS: 速度快,有大量統(tǒng)計(jì)分析模塊,可擴(kuò)展性稍差,昂貴。 SPSS: 復(fù)雜的用戶圖形界面,簡單易學(xué),但編程十分困難。 Splus: 運(yùn)行S語言,具有復(fù)雜的界面,與R完全兼容,昂貴。 ,9,R的缺點(diǎn),用戶需要對命令熟悉 與代碼打交道,需要記住常用命令。 占用內(nèi)存 所有的數(shù)據(jù)處理在內(nèi)存中進(jìn)行,不適于處理超大規(guī)模的數(shù)據(jù)。 運(yùn)行速度稍

4、慢 即時(shí)編譯,約相當(dāng)于C語言的1/20。 相比點(diǎn)擊鼠標(biāo)進(jìn)行操作,R仍能夠大大提高效率。,10,圖2 R軟件首頁 /,11,CRAN,The Comprehensive R Archive Network 簡稱CRAN,由世界幾十個(gè)鏡像網(wǎng)站組成網(wǎng)絡(luò),提供下載安裝程序和相應(yīng)軟件包。各鏡像更新頻率一般為1-2天 推薦鏡像: 中國的鏡像:數(shù)學(xué)所 /mirrors/CRAN/ 即時(shí)更新的CRAN源 /,12,Windows下載和安裝R,CRAN: BinariesWindow

5、sbase 下載完成后,雙擊R-2.11.0-win32.exe 開始安裝。 一直點(diǎn)擊下一步,各選項(xiàng)默認(rèn),語言建議選英文。,圖3 R2.11.0下載頁面,13,圖 4 R登陸界面(Windows版) 路徑: 開始所有程序R 2.11.0,菜單欄,快捷按鈕,控制臺,光標(biāo):等待輸入,14,圖 5 R Gui 的File菜單,15,圖 6 R Gui 的Edit菜單,16,圖 7 R Gui 的Packages菜單,17,圖 8 R Gui 的Help菜單,18,R程序包(R Packages),程序包是什么? R程序包是多個(gè)函數(shù)的集合,具有詳細(xì)的說明和示例。 Window下的R程序包是經(jīng)過編譯的z

6、ip包。 每個(gè)程序包包含R函數(shù)、數(shù)據(jù)、幫助文件、描述文件等。 為什么要安裝程序包? R程序包是R功能擴(kuò)展,特定的分析功能,需要用相應(yīng)的程序包實(shí)現(xiàn)。 例如:系統(tǒng)發(fā)育分析,常用到ape程序包,群落生態(tài)學(xué)vegan包等。,19,常用R程序包(I),20,常用R程序包(II),21,常用R程序包(III),22,圖 9 CRAN Task Views: 對程序包的分類介紹,CRAN Task Views,23,圖 10 vegan包頁面,三種平臺上的程序包,24,R程序包,在CRAN 提供了每個(gè)包的源代碼和編譯好的程序包 以vegan包為例,CRAN提供了: Package source: vegan

7、_1.17-2.tar.gz MacOS X binary: vegan_1.17-2.tgz Windows binary: vegan_1.17-2.zip Reference manual: vegan.pdf Window下程序包為zip文件,安裝時(shí)不要解壓縮。,25,安裝程序包的方法,1 用函數(shù) install.packages(), 如果已經(jīng)連接到互聯(lián)網(wǎng),在括號中輸入要安裝的程序包名稱,選擇鏡像后,程序?qū)⒆詣酉螺d并安裝程序包。 例如: 要安裝picante包,在控制臺中輸入 install.packages(picante) 2 安裝本地zip包 路徑:Packagesinstal

8、l packages from local files 選擇本地磁盤上存儲zip包的文件夾。,26,程序包使用,程序包的中函數(shù),都要先導(dǎo)入,再使用,因此導(dǎo)入程序包是第一步。 在控制臺中輸入如下命令: library(vegan) library(ade4) 程序包內(nèi)的函數(shù)的用法與R內(nèi)置的基本函數(shù)用法一樣。 library(vegan) This is vegan 1.17-2,27,查看程序包幫助文件,vegan 程序包內(nèi)部都有哪些函數(shù)?分別有什么功能? 查詢程序包內(nèi)容最常用的方法: 1 菜單 幫助Html幫助 2 查看pdf幫助文檔,28,查看函數(shù)的幫助文件,函數(shù)的默認(rèn)值是什么? 怎么使用?

9、 使用時(shí)需要注意什么問題? 需要查詢函數(shù)的幫助。 1 ?t.test 2 RGuiHelpHtml help 3 apropos(t.test) 4 help(t.test) 5 help.search(t.test) 6 查看R包pdf手冊,29,圖 11 R幫助文件的內(nèi)容與格式,30,幫助文件的內(nèi)容,lmstats #函數(shù)名及所在包 Fitting Linear Models #標(biāo)題 Description #函數(shù)描述 Usage #默認(rèn)選項(xiàng) Arguments #參數(shù) Details #詳情 Author(s) #作者 References #參考文獻(xiàn) Examples #舉例,31,練

10、習(xí)一 安裝R并導(dǎo)入程序包,1. 安裝R軟件、熟悉菜單 2. 安裝程序包 3. 調(diào)用程序包,查看程序包的幫助 library(vegan) library(ape) 查找ape包中plot.phylo函數(shù)的幫助 輸入 ?plot.phylo 將其中的Example粘貼到控制臺中,查看運(yùn)行的結(jié)果。,32,R圖形界面:R commander,R commander是R的圖形界面之一,是John Fox教授編寫的,適用于不希望R編程的用戶。隨著用戶的操作,其窗口還可以顯示出相應(yīng)操作的R程序,對于初學(xué)者可能會有幫助。 安裝R commander install.packages(Rcmdr) R將自動下

11、載并安裝Rcmdr所需的所有程序包,33,圖形界面之一:R Commander,圖 12 R commander 界面 library(Rcmdr),界面操作代碼,結(jié)果輸出,34,為什么要學(xué)習(xí)編程?,界面操作直觀易學(xué),但也存在一些不足: (1)操作的過程難以保存,數(shù)據(jù)處理不夠靈活,在進(jìn)行步驟繁多的數(shù)據(jù)處理工作時(shí)十分費(fèi)時(shí)費(fèi)力; (2)在建立模型或自己編寫函數(shù)時(shí)也會遇到困難。 而這些困難可以通過編程解決。 要學(xué)習(xí)R編程,首先要了解R的函數(shù)、對象及其操作。,35,二 函數(shù)與對象,36,R的函數(shù),R是一種解釋性語言,輸入后可直接給出結(jié)果。 功能靠函數(shù)實(shí)現(xiàn)。 函數(shù)形式: 函數(shù)(輸入數(shù)據(jù),參數(shù)= ) 如果

12、沒有指定,則參數(shù)的以默認(rèn)值為準(zhǔn)。 例如: 平均值 mean(x, trim = 0, na.rm = FALSE, .) 線性模型 lm(yx, data=test),37,R的函數(shù),每一個(gè)函數(shù)執(zhí)行特定的功能,后面緊跟括號,例如: 平均值 mean() 求和 sum() 繪圖 plot() 排序 sort() 除了基本的運(yùn)算之外,R的函數(shù)又分為”高級”和”低級”函數(shù),高級函數(shù)可調(diào)用低級函數(shù),這里的”高級”函數(shù)習(xí)慣上稱為泛型函數(shù)。 如plot()就是泛型函數(shù),可以根據(jù)數(shù)據(jù)的類型,調(diào)用底層的函數(shù),應(yīng)用相應(yīng)的方法繪制相應(yīng)的圖形。這就是面向?qū)ο缶幊痰乃枷搿?38,R有哪些函數(shù)?,查詢的方法:HelpH

13、tml helppackages log() log10() exp() sin() cos() tan() asin() acos(),binom.test() fisher.test() chisq.test() glm(y x1+x2+x3, binomial) friedman.test() mean() sd() var() .,39,圖13 箱線圖修飾前后(左:默認(rèn)值,右:修改屬性后) 函數(shù)的調(diào)用方法, 函數(shù)名() 如 plot(), lm(),并將對象放入括號中。,R函數(shù)調(diào)用及其選項(xiàng),40,R函數(shù)調(diào)用及其選項(xiàng),箱線圖繪制函數(shù)的調(diào)用 boxplot(daytype, data=ba

14、c, col=red, xlab=Virus, ylab=days) daytype,以type為橫軸,day為縱軸繪制箱線圖。 data=bac 數(shù)據(jù)來源bac col=“red” 箱線圖為紅色 xlab=“Virus” 橫軸名稱為Virus ylab=“days” 縱軸名稱為days,41,練習(xí)二:查詢函數(shù)幫助,查看boxplot的幫助文件 ?boxplot 查看最后的examples 將幫助文件中的內(nèi)容粘貼到控制臺中,運(yùn)行并觀看運(yùn)行結(jié)果。 boxplot(count spray, data = InsectSprays, col = lightgray) 參數(shù)更改 boxplot(cou

15、nt spray, data = InsectSprays, col = red, xlab=spray, ylab=counts),42,賦值與注釋,在控制臺中鍵入如下命令 2 + 2 a 代替 b - 2 c - a+b c #注釋,賦值符號,43,如何為對象起名?,R處理的所有數(shù)據(jù)、變量、函數(shù)和結(jié)果都以對象的形式保存。 1. 區(qū)分大小寫,注意China和china的不同。 2. 不能用數(shù)字作為變量,對象也不能用數(shù)字開頭,但是數(shù)字可以放在中間或結(jié)尾,如2result與result2,后者是合法的。 3. 建議不要用過短的名稱。可以用”.”作為間隔,例如 anova.result1。 4.

16、不要使用保留名: NA, NaN, pi, LETTERS, letters, month.abb, ,44,元素的類型,對象是由各元素組成的。每個(gè)元素,都有自己的數(shù)據(jù)類型 數(shù)值型 Numeric 如 100, 0, -4.335 字符型 Character 如 “China” 邏輯型 Logical 如TRUE, FALSE 因子型 Factor 表示不同類別 復(fù)數(shù)型 Complex 如:2 + 3i,45,對象的類(class),向量(vector) 一系列元素的組合。 如 c(1,2,3); c(a,a,b,b,c) 因子(factor) 因子是一個(gè)分類變量 c(a,

17、a,b,b,c) 矩陣(matrix) 二維的數(shù)據(jù)表,是數(shù)組的一個(gè)特例 x - 1:12 ; dim(x) - c(3,4) ,1 ,2 ,3 ,4 1, 1 4 7 10 2, 2 5 8 11 3, 3 6 9 12,46,對象的類,數(shù)組(array) 數(shù)組是k維的數(shù)據(jù)表(k in 1:n, n 為正整數(shù))。 向量(n = 1) 矩陣(n = 2) 高維數(shù)組(n = 3) 數(shù)據(jù)框(dataframe) 是由一個(gè)或幾個(gè)向量和(或)因子構(gòu)成,它們必須是等長的,但可以是不同的數(shù)據(jù)類型。 列表(list) 列表可以包含任何類型的對象。 可以包含向量、矩陣、高維數(shù)組,也可以包含列表,47,運(yùn)算符,數(shù)

18、學(xué)運(yùn)算 運(yùn)算后給出數(shù)值結(jié)果 +, -, *, /, (冪) 比較運(yùn)算 運(yùn)算后給出判別結(jié)果(TRUE FALSE) , =, =, != 邏輯運(yùn)算 與、或、非 !, #引用第5個(gè)元素 intake.prec(3,5,7) #引用第3,5,7個(gè)元素 v - c(3,5,7); intake.prev; intake.pre1:5; #引用第1到5個(gè)元素 intake.pre-c(3,5,7) #去除第3,5,7元素,73,數(shù)據(jù)框內(nèi)元素的引用,intake - data.frame(intake.pre, intake.post) 引用數(shù)據(jù)框中的元素 (1) $ 引用列,后面為列的名稱 例如 int

19、ake$intake.pre (2) ,方括號引用,逗號前為行,逗號后為列 intake,1; 引用第1列 intake5,; 引用第5行 intake5,1; 引用第1列,第5行 i = 1:5; intakei, 引用1到5行,74,列表內(nèi)元素的引用,列表內(nèi)元素的引用可以用” 如 list1c(1,2,3) 上述放于”內(nèi)的數(shù)字,稱為下標(biāo)。通過下標(biāo)的變化,可以方便的訪問向量、數(shù)據(jù)框、矩陣、列表內(nèi)的各元素。熟悉下標(biāo)的用法對掌握循環(huán)結(jié)構(gòu)是非常重要的。,75,訪問數(shù)據(jù)框內(nèi)的元素,直接調(diào)用數(shù)據(jù)框內(nèi)的列,以列的名稱作為向量的名稱 attatch() detatch() 在函數(shù)內(nèi)部,對數(shù)據(jù)進(jìn)行相應(yīng)調(diào)整

20、with() #with函數(shù)內(nèi)部形成一個(gè)空間,在這個(gè)空間中,函數(shù)可以對列訪問。 within() transform() #數(shù)據(jù)的轉(zhuǎn)換,如取log subset() #取數(shù)據(jù)的子集 apply() #對數(shù)據(jù)表或矩陣應(yīng)用某個(gè)函數(shù),可減少循環(huán),76,條件篩選,條件篩選是先對變量否滿足條件進(jìn)行判斷,滿足為TRUE,不滿足為FALSE。之后再用邏輯值對向量內(nèi)的元素進(jìn)行篩選。 intake.pre 7000 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE intake.preintake.pre 7000 intake.pr

21、e 7000 axis(at=seq(0.2,1.8,0.2), side=2) 4.補(bǔ)齊散點(diǎn)圖的邊框 box() 5.添加標(biāo)題、副標(biāo)題、橫軸說明、縱軸說明 title(main=Main title, sub=subtitle, xlab=x-label, ylab=y-label),105,圖25 分步繪圖,106,一頁多圖,圖26 一頁多圖 par() par(mfrow=c(2,2) .,107,在原有圖形上添加元素,舉例: x - rnorm(100) # 生成隨機(jī)數(shù) hist(x,freq=F) # 繪制直方圖 curve(dnorm(x),add=T) # 添加曲線 h - hi

22、st(x, plot=F) # 繪制直方圖 ylim - range(0, h$density, dnorm(0) #設(shè)定縱軸的取值范圍 hist(x, freq=F, ylim=ylim) #繪制直方圖 curve(dnorm(x),add=T,col=red) #添加曲線,108,圖27 在原有直方圖上添加曲線,109,練習(xí)八:繪圖練習(xí),練習(xí)1 將Rplots.r中的代碼拷貝到R控制臺中,查看R繪制的圖形。 練習(xí)2 對例進(jìn)行回歸分析,并繪制散點(diǎn)圖,并為散點(diǎn)圖添加回歸直線。 plot(impurityrate) reg-lm(impurityrate) abline(reg,col=red)

23、 summary(reg),110,五 編寫函數(shù),111,編程基礎(chǔ),R可以靈活的編寫程序,用戶自己編寫的程序可以直接調(diào)用。編程時(shí)無需聲明變量的類型,這與C,C+等語言不同。 基本格式 函數(shù)名 - function(數(shù)據(jù),參數(shù)1= 默認(rèn)值,) 異常處理; 表達(dá)式(循環(huán)/判別); return(返回值); 函數(shù)內(nèi)部也可用#添加注釋,112,函數(shù)實(shí)例,圖28 函數(shù)實(shí)例 data2mat(),113,程序流程控制 if,if(條件) 表達(dá)式 if(條件) 表達(dá)式1 else 表達(dá)式2 舉例 p = 0.03 if(p 0.05!) ,114,循環(huán) for, while,for(變量 in 向量) 表達(dá)

24、式 用法: for(i in 1:10) print(i) while(條件) 表達(dá)式 用法: i - 1 while(i10) print(i); i - i + 1,115,返回值,返回值表示函數(shù)輸出的結(jié)果。 返回值必須是一個(gè)對象。 R默認(rèn)將最后一行作為返回值。 如果函數(shù)的結(jié)果需要有多個(gè)返回值,可以創(chuàng)建一個(gè)list(),并返回該對象。 也可以用return()函數(shù),設(shè)定返回值。 但是一個(gè)函數(shù)的返回的對象只有一個(gè)。,116,異常處理,如數(shù)據(jù)輸入不能滿足要求,或者參數(shù)設(shè)定錯(cuò)誤等等,可能造成函數(shù)給出錯(cuò)誤的結(jié)果,則需要對函數(shù)的運(yùn)行過程發(fā)出警告或終止,以提高程序的穩(wěn)健性。 警告的寫法 if(any(

25、is.na(inputdata) inputdata - na.omit(inputdata) cat(“NAs are found in the input data, and has been removed.n) 終止的寫法 if(any(is.na(xx) stop(NAs are not allowed!n),117,函數(shù)舉例,問題:輸入直角三角形的兩個(gè)邊長,求其斜邊長。 定義函數(shù): rcal - function(x,y) z - x2 + y2 result - sqrt(z) return(result) 調(diào)用函數(shù): rcal(3,4),118,練習(xí)九 編寫函數(shù),編寫一個(gè)函數(shù),給出兩個(gè)數(shù)之后,直接給出這兩個(gè)數(shù)的平方和。 sqtest-function(x, y) z1=x2; z2=y2; z3=z1+z2; return(z3); ,119,六 數(shù)據(jù)保存,120,write.table() write.csv() save.image() sink() unlink() 若有LaTeX基礎(chǔ),可以用 Sweave() 函數(shù) 該函數(shù)能將腳本、程序說明和運(yùn)算結(jié)果

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論