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

下載本文檔

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

文檔簡介

1、1語言初步張金龍 June 3, 2010 數(shù)據(jù)處理、繪圖與編程2報告內(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ù)、建立模型,具有良好的擴(kuò)展性,在國外學(xué)術(shù)界

2、應(yīng)用很廣。 1995年由新西蘭Auckland大學(xué)統(tǒng)計(jì)系的Robert Gentleman和Ross Ihaka,基于S語言的源代碼,編寫了一能執(zhí)行S語言的軟件,并將該軟件的源代碼全部公開,這就是R軟件,其命令統(tǒng)稱為R語言。6R的特點(diǎn)多領(lǐng)域的統(tǒng)計(jì)資源 目前在R網(wǎng)站上約有2400個程序包,涵蓋了基礎(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即時解釋,輸入命令,即可獲得相應(yīng)的結(jié)果。7為什么選擇R?豐富的資源 涵蓋了多種行業(yè)數(shù)據(jù)分析中幾乎所有的方法。良好的擴(kuò)展

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

4、率。10圖2 R軟件首頁 / 11CRANThe Comprehensive R Archive Network簡稱CRAN,由世界幾十個鏡像網(wǎng)站組成網(wǎng)絡(luò),提供下載安裝程序和相應(yīng)軟件包。各鏡像更新頻率一般為1-2天推薦鏡像:中國的鏡像:數(shù)學(xué)所/mirrors/CRAN/即時更新的CRAN源/12Windows下載和安裝RCRAN: BinariesWindowsbase 下載完成后,雙擊R-2.11.0-win32.exe 開始安裝。一直點(diǎn)擊下一步,各選項(xiàng)默認(rèn),語言

5、建議選英文。圖3 R2.11.0下載頁面13圖 4 R登陸界面(Windows版)路徑: 開始所有程序R 2.11.0菜單欄菜單欄快捷按鈕快捷按鈕控制臺控制臺光標(biāo)光標(biāo):等待輸入等待輸入14圖 5 R Gui 的File菜單15圖 6 R Gui 的Edit菜單16圖 7 R Gui 的Packages菜單17圖 8 R Gui 的Help菜單18R程序包(R Packages)程序包是什么?程序包是什么? R程序包是多個函數(shù)的集合,具有詳細(xì)的說明和示例。 Window下的R程序包是經(jīng)過編譯的zip包。每個程序包包含R函數(shù)、數(shù)據(jù)、幫助文件、描述文件等。為什么要安裝程序包?為什么要安裝程序包? R

6、程序包是R功能擴(kuò)展,特定的分析功能,需要用相應(yīng)的程序包實(shí)現(xiàn)。 例如:系統(tǒng)發(fā)育分析,常用到ape程序包,群落生態(tài)學(xué)vegan包等。19常用R程序包(I)ade4利用歐幾里得方法進(jìn)行生態(tài)學(xué)數(shù)據(jù)分析adephylo系統(tǒng)進(jìn)化數(shù)據(jù)挖掘與比較方法ape系統(tǒng)發(fā)育與進(jìn)化分析apTreeshape進(jìn)化樹分析bootBootstrap檢驗(yàn)cluster聚類分析ecodist生態(tài)學(xué)數(shù)據(jù)相異性分析FD功能多樣性分析geiger物種形成速率與進(jìn)化分析20常用R程序包(II)Graphics繪圖lattice柵格圖maptools空間對象的讀取和處理mefa生態(tài)學(xué)和生物地理學(xué)多元數(shù)據(jù)處理mgcv廣義加性模型相關(guān)mvpar

7、t多變量分解nlme線性及非線性混合效應(yīng)模型ouch系統(tǒng)發(fā)育比較pgirmess生態(tài)學(xué)數(shù)據(jù)分析phangorn系統(tǒng)發(fā)育分析21常用R程序包(III)picante群落系統(tǒng)發(fā)育多樣性分析raster柵格數(shù)據(jù)分析與處理seqinrDNA序列分析sp空間數(shù)據(jù)處理spatstat空間點(diǎn)格局分析,模型擬合與檢驗(yàn)splancs空間與時空點(diǎn)格局分析statsR統(tǒng)計(jì)學(xué)包SDMTools物種分布模型工具vegan植物與植物群落的排序,生物多樣性計(jì)算22圖 9 CRAN Task Views: 對程序包的分類介紹CRAN Task Views23圖 10 vegan包頁面三種平臺上的程序包24R程序包在CRAN

8、提供了每個包的源代碼和編譯好的程序包以vegan包為例,CRAN提供了:Package source: vegan_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文件,安裝時不要解壓縮。25安裝程序包的方法1 用函數(shù) install.packages(),如果已經(jīng)連接到互聯(lián)網(wǎng),在括號中輸入要安裝的程序包名稱,選擇鏡像后,程序?qū)⒆詣酉螺d并安裝程序包。例如: 要安裝picante包,在控制臺中輸入 in

9、stall.packages(picante)2 安裝本地zip包路徑:Packagesinstall 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-227查看程序包幫助文件vegan 程序包內(nèi)部都有哪些函數(shù)?分別有什么功能?查詢程序包內(nèi)容最常用的方法:1 菜單 幫助Html幫助2 查看pdf

10、幫助文檔28查看函數(shù)的幫助文件函數(shù)的默認(rèn)值是什么?函數(shù)的默認(rèn)值是什么? 怎么使用?怎么使用? 使用時需要注意什么問使用時需要注意什么問題?題? 需要查詢函數(shù)的幫助。需要查詢函數(shù)的幫助。1 ?t.test 2 RGuiHelpHtml help3 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

11、#參數(shù) Details #詳情 Author(s) #作者 References #參考文獻(xiàn) Examples #舉例31練習(xí)一 安裝R并導(dǎo)入程序包1. 安裝R軟件、熟悉菜單2. 安裝程序包3. 調(diào)用程序包,查看程序包的幫助library(vegan)library(ape)查找ape包中plot.phylo函數(shù)的幫助輸入 ?plot.phylo將其中的Example粘貼到控制臺中,查看運(yùn)行的結(jié)果。32R圖形界面:R commanderR commander是R的圖形界面之一,是John Fox教授編寫的,適用于不希望R編程的用戶。隨著用戶的操作,其窗口還可以顯示出相應(yīng)操作的R程序,對于初學(xué)者

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

13、接給出結(jié)果。功能靠函數(shù)實(shí)現(xiàn)。函數(shù)形式: 函數(shù)(輸入數(shù)據(jù),參數(shù)= )如果沒有指定,則參數(shù)的以默認(rèn)值為準(zhǔn)。例如:平均值 mean(x, trim = 0, na.rm = FALSE, .) 線性模型 lm(yx, data=test)37R的函數(shù)每一個函數(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ū)ο缶幊痰?/p>

14、思想。38R有哪些函數(shù)?查詢的方法:查詢的方法:HelpHtml helppackageslog() 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)40R函數(shù)調(diào)用及其選項(xiàng)箱線圖繪制函數(shù)的調(diào)用boxplot(dayty

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

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

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

18、的數(shù)據(jù)表,是數(shù)組的一個特例x - 1:12 ; dim(x) = 3) 數(shù)據(jù)框(dataframe) 是由一個或幾個向量和(或)因子構(gòu)成,它們必須是等長的,但可以是不同的數(shù)據(jù)類型。列表(list) 列表可以包含任何類型的對象。 可以包含向量、矩陣、高維數(shù)組,也可以包含列表47運(yùn)算符數(shù)學(xué)運(yùn)算 運(yùn)算后給出數(shù)值結(jié)果+, -, *, /, (冪冪)比較運(yùn)算 運(yùn)算后給出判別結(jié)果(TRUE FALSE), , =, =, !=邏輯運(yùn)算 與、或、非!, &, &, |, |48數(shù)據(jù)表的行與列低地33220251049樣方5低地20260241238樣方4山坡45390201146樣方3山坡3

19、0350261251樣方2山頂25600221540樣方1類型坡度海拔屬數(shù)科數(shù)物種數(shù)行名Row names字符串列名 Column names每列可看做帶名稱的向量表1 數(shù)據(jù)表、數(shù)據(jù)框與向量字符串、因子每行作為一個Entry49數(shù)據(jù)框的組成 每個數(shù)據(jù)表可以看作一個數(shù)據(jù)框(dataframe)。 每一列(column)作為一個向量(vector)。 由很多不同類型的向量組成,如字符型,因子型,數(shù)值型。 每一行(row)作為一個記錄(entry) 如何生成數(shù)據(jù)框? 兩種辦法:(1)從外部數(shù)據(jù)讀取(2)各類型因子組合成數(shù)據(jù)框50外部數(shù)據(jù)讀取 最為常用的數(shù)據(jù)讀取方式是用read.table() 函數(shù)或

20、read.csv()函數(shù)讀取外部txt或csv格式的文件。 txt文件,制表符間隔 csv文件,逗號間隔 一些R程序包(如foreign)也提供了直接讀取Excel, SAS, dbf, Matlab, spss, systat, Minitab文件的函數(shù)。51read.csv()的使用例:test.data-read.csv(D:/R/test2.csv,header=T)header=T表示將數(shù)據(jù)的第一行作為標(biāo)題。read.table(file=file.choose(),header=T) 可以彈出對話框,選擇文件。52例:從數(shù)據(jù)輸入到t檢驗(yàn)編號123456身高 m1.751.801.6

21、51.901.741.91體重kg607257909572表2 六名患者的身高和體重現(xiàn)有6名患者的身高和體重,檢驗(yàn)體重除以身高的平方是否等于22.5。53第一種方式:從控制臺輸入數(shù)據(jù)數(shù)據(jù)量較少時可以從控制臺直接輸入: height-c(1.75, 1.80, 1.65, 1.90, 1.74, 1.91) weight-c(60, 72, 57, 90, 95, 72) sq.height-height2 ratio-weight/sq.height t.test(ratio, mu=22.5) 54第二種方式 從外部讀取數(shù)據(jù)數(shù)據(jù)量較大時用read.table函數(shù)從外部txt文件讀取第1步 將

22、Excel中的數(shù)據(jù)另存為.txt格式(制表符間隔)或.csv格式。第2步 用read.table()或read.csv()函數(shù)將數(shù)據(jù)讀入R工作空間,并賦值給一個對象。55圖14 在Excel中將數(shù)據(jù)存為txt文件56例:t檢驗(yàn)(續(xù))一般從txt文檔讀取數(shù)據(jù)。每一行作為一個觀測值。每一行的變量用制表符,空格或逗號間隔開。read.table(”位置位置”, header=T)read.csv(”位置位置”,header=T)#從外部讀取數(shù)據(jù)data1-read.table(d:/t.test.data.txt,header=T)bmi- data1$weight/data1$height2t.t

23、est(bmi, mu=22.5) #t檢驗(yàn)57練習(xí)三:數(shù)據(jù)讀取和t檢驗(yàn)將表2中的數(shù)據(jù)錄入Excel中,另存為t.test.txt文件。用read.table函數(shù)讀取該文件。t.test.data - read.table(“X:/t.test.txt”, header=TRUE)對變量t.test.data中的attach(t.test.data)ratio-weight/height2t.test(ratio)58例:單因素方差分析 將三種不同菌型的傷寒病毒a,b,c分別接種于10,9,和11只小白鼠上,觀察其存活天數(shù),問三種菌型下小白鼠的平均存活天數(shù)是否有顯著差異。 a菌株:菌株:2,

24、4, 3, 2, 4, 7, 7, 2, 5, 4 b菌株:菌株:5, 6, 8, 5, 10, 7, 12, 6, 6 c菌株:菌株:7,11,6, 6, 7, 9, 5, 10, 6, 3, 10 59準(zhǔn)備數(shù)據(jù)表圖15 數(shù)據(jù)表的準(zhǔn)備day和type 各為一列60例:方差分析(續(xù))#數(shù)據(jù)讀取,將test1.txt中的內(nèi)容保存到bac中, header=T表示保留標(biāo)題行。bac-read.table(d:/anova.data.txt,header=T) #將ba數(shù)據(jù)框中的type轉(zhuǎn)換為因子(factor)bac$type-as.factor(bac$type) ba.an-aov(lm(da

25、ytype, data=bac) summary(ba.an) boxplot(daytype,data=bac,col=red)61圖16 三種菌型對小白鼠影響的箱線圖62練習(xí)四:方差分析和箱線圖繪制1 在excel中準(zhǔn)備數(shù)據(jù)表2 用R讀取數(shù)據(jù)表3 輸入如下命令進(jìn)行方差分析、繪制箱線圖boxplot(daytype,data=bac,col=red) ba.an30的行,提取其中的某一列,進(jìn)行分析等。64向量的創(chuàng)建四種類型的向量字符型character-c(China, Korea, Japan, UK, USA, France, India, Russia) 數(shù)值型numeric-c(1,

26、 3, 6, 7, 3, 8, 6, 4)邏輯型logical-c(T, F, T, F, T, F, F, T)復(fù)數(shù)型 略65向量的創(chuàng)建生成向量的函數(shù) c(),rep(),seq(),”:”c(2,5,6,9) rep(2,times=4) seq(from=3, to=21, by=3 ) 1 3 6 9 12 15 18 21“:” 1:15 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15通過與向量的組合,產(chǎn)生更為復(fù)雜的向量。rep(1:2,c(10,15)66向量創(chuàng)建產(chǎn)生隨機(jī)數(shù)runif(10, min = 0, max= 1) rnorm(10, mean

27、 = 0, sd = 1)幾個隨機(jī)數(shù)的相關(guān)函數(shù)幾個隨機(jī)數(shù)的相關(guān)函數(shù)概率密度 dunif(x, min=0, max=1, log = FALSE) 累積函數(shù) punif(q, min=0, max=1, )分位數(shù) qunif(p, min=0, max=1, ) 隨機(jī)均勻分布 runif(n, min=0, max=1) 67矩陣的創(chuàng)建生成矩陣的函數(shù) dim()和和matrix()dim() 定義矩陣的行列數(shù),例如:定義矩陣的行列數(shù),例如: 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 matr

28、ix.x - matrix(1:12,nrow=3,byrow=T)t(x)#轉(zhuǎn)置 為行或列添加名稱:s() s()68數(shù)據(jù)框的創(chuàng)建創(chuàng)建數(shù)據(jù)框的函數(shù):data.frame(), as.data.frame(), cbind(), rbind()cbind() # 按列組合成數(shù)據(jù)框rbind() # 按行組合成數(shù)據(jù)框data.frame() #生成數(shù)據(jù)框head() #默認(rèn)訪問數(shù)據(jù)的前6行69列表的創(chuàng)建列表可以是不同類型甚至不同長度的向量(數(shù)值型,邏輯型,字符型等等)、數(shù)據(jù)框甚至是列表的組合。list()例如list(character,numeric,logic

29、al,matrix.x)70類的判斷對象類型判斷mode() 判斷存儲的類型class() 判斷數(shù)據(jù)的類根據(jù)數(shù)據(jù)的類,采用相應(yīng)的處理方法。以下函數(shù),主要用在函數(shù)處理異常時使用,目的是增強(qiáng)程序的穩(wěn)健性。is.numeric() #返回值為TRUE或FALSEis.logical() #是否為邏輯值is.charactor() #是否為字符串is.null() #是否為空is.na() #是否為na71類的轉(zhuǎn)換as.numeric() #轉(zhuǎn)換為數(shù)值型as.logical() #轉(zhuǎn)換為邏輯型as.charactor() #轉(zhuǎn)換為字符串a(chǎn)s.matrix() #轉(zhuǎn)換為矩陣as.data.frame()

30、 #轉(zhuǎn)換為數(shù)據(jù)框as.factor() #轉(zhuǎn)換為因子72向量內(nèi)的元素引用# Dalgaard書中的例子書中的例子intake.pre - c(5260, 5470, 5640, 6180, 6390, 6515, 6805, 7515, 7515, 8230, 8770)intake.post - c(3910, 4220, 3885, 5160, 5645, 4680, 5265, 5975, 6790, 6900, 7335)intake.pre5; #引用第5個元素intake.prec(3,5,7) #引用第3,5,7個元素v - c(3,5,7); intake.prev; inta

31、ke.pre1:5; #引用第1到5個元素intake.pre-c(3,5,7) #去除第3,5,7元素73數(shù)據(jù)框內(nèi)元素的引用intake 70001 FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUEintake.preintake.pre 7000intake.pre 7000 & intake.pre 7000 & intake.pre = 800077練習(xí)五:下標(biāo)和條件篩選創(chuàng)建一個2到50的向量 vector12, 4, 6, 8, ., 48, 50vector14078排 序?qū)⑾蛄恐械脑匕凑找?/p>

32、定順序排列。 sort() 按數(shù)值大小排序舉例: intake$intake.pre sort(intake$intake.pre) order() 默認(rèn)給出從小到大的出現(xiàn)序號。 order(intake$post) o - intakeorder(intake$intake.pre),79工作空間imageR的所有對象都在計(jì)算機(jī)內(nèi)存的工作空間中。ls() 列出工作空間中的對象rm() 刪除工作空間中的對象rm(list=ls() 刪除空間中所有對象save.image() 保存工作鏡像sink() 將運(yùn)行結(jié)果保存到指定文件中g(shù)etwd() 顯示當(dāng)前工作文件夾setwd() 設(shè)定工作文件夾可將

33、結(jié)果保存在image中,形式為.Rdata文件,里面保存了R當(dāng)前工作空間中的各種對象,包括函數(shù)。80輸入歷史 history 輸入的命令,在R中作為歷史history保存,可輸入函數(shù) history() # 查看輸入歷史 history(Inf) # 查看打開R之后所有的輸入 可用向上或向下的箭頭切換輸入的行。81練習(xí)六:了解工作路徑1 查看當(dāng)前R工作的空間目錄getwd()2 將R工作的路徑設(shè)置為 d:/data/setwd(d:/data)save.image(example.Rdata)load(example.Rdata)3 歷史 history(Inf)82三 腳本編程Scripti

34、ng83腳本語言腳本語言 腳本語言(scripting language)又稱動態(tài)語言,是依靠解釋器完成相應(yīng)的功能的一類計(jì)算機(jī)語言,通常以ASCII碼的文本格式保存源程序。特點(diǎn) 腳本語言語法和結(jié)構(gòu)通常比較簡單,不需要編譯,通過解釋器對腳本進(jìn)行解釋,從而給出結(jié)果,能用簡單的代碼完成復(fù)雜的功能,但是速度較慢。常見的腳本語言 Windows批處理程序, PHP, Perl, Python, Ruby, JavaScript等。等。84集成開發(fā)環(huán)境 很多計(jì)算機(jī)語言都有IDE (integrated development environment),即集成開發(fā)環(huán)境,如 Windows的VisualStu

35、dio, Visual Basic等等。 但是R通常無需集成開發(fā)環(huán)境,腳本在一般的文本編輯器里即可編輯。 如 Windows自帶的記事本,Notepad+, UltraEdit,TinnR。 Linux下的Vi, Vim, Emacs等等。 在代碼較多的情況下,常需要對行數(shù)、函數(shù)、括號、函數(shù)選項(xiàng)等進(jìn)行高亮顯示,設(shè)置成不同的顏色,以減少錯誤的發(fā)生。85編輯器R自帶的腳本編輯器 Editplus ( ) TinnR (/Tinn-R/ ) Ultraedit ( ) Emacs (/software/emacs/ ) Notepad

36、+ 與NpptoR組合(http:/notepad- ) 記事本或?qū)懽职?等等86圖17 TinnR對R腳本的高亮顯示87圖18 NotePad+對R腳本的高亮顯示88例-線性回歸轉(zhuǎn)速rpm 202224262830323436384042雜質(zhì)率%8.49.511.810.413.314.813.214.716.416.518.918.5n對一批涂料進(jìn)行研究,確定攪拌速度對雜質(zhì)含量的影響,數(shù)據(jù)如下,試進(jìn)行回歸分析表3 攪拌速度對涂料中雜質(zhì)的影響89腳本舉例#將以下代碼粘貼到編輯器中,另存為regression.r文件。rate-c(20, 22, 24, 26, 28, 30, 32, 34,

37、 36, 38, 40, 42)impurity -c(8.4, 9.5, 11.8, 10.4, 13.3, 14.8, 13.2, 14.7, 16.4, 16.5, 18.9, 18.5)plot(impurityrate)regFileOpen Script #Ctrl+R運(yùn)行3 直接粘貼到R控制臺ctrl+c, ctrl+v第三種最為簡單直接91練習(xí)十:R腳本運(yùn)行將R命令粘貼到記事本中,另存為regression.R文件。分別通過三種方式運(yùn)行R腳本。92四 R繪圖93圖19 R繪制的圖形94繪制地圖圖20 左圖左圖 maps包包 map()右圖右圖 PBSmapping包包 addB

38、ubbles() 95繪制地圖 圖21 fields 包實(shí)例 spdep 包實(shí)例96空間分析繪圖圖22 gstat程序包實(shí)例97R繪圖功能 R具備卓越的繪圖功能,通過參數(shù)設(shè)置對圖形進(jìn)行精確控制。繪制的圖形能滿足出版印刷的要求,可以輸出Jpg、tiff、eps、emf、pdf、png等各種格式。 通過與GhostScript軟件的結(jié)合,可以生成600dpi,1200dpi的等各種分辨率和尺寸的圖形。 繪圖是通過繪圖函數(shù)結(jié)合相應(yīng)的選項(xiàng)完成的。 繪圖函數(shù)包括高級繪圖函數(shù)和低級繪圖函數(shù)。98高級繪圖函數(shù)plot() 繪制散點(diǎn)圖等多種圖形,根據(jù)數(shù)據(jù)的類,調(diào)用相應(yīng)的函數(shù)繪圖hist() 頻率直方圖boxp

39、lot() 箱線圖stripchart() 點(diǎn)圖barplot() 柱狀圖dotplot() 點(diǎn)圖piechart() 餅圖matplot()數(shù)學(xué)圖形99圖23 散點(diǎn)圖與箱線圖100低級繪圖函數(shù)lines()添加線curve()添加曲線abline()添加給定斜率的線points()添加點(diǎn)segments()折線arrows()箭頭axis()坐標(biāo)軸box()外框title()標(biāo)題text()文字mtext()圖邊文字101繪圖參數(shù)參數(shù)用在函數(shù)內(nèi)部,在沒有設(shè)定值時使用默認(rèn)值。font = 字體,lty = 線類型,lwd = 線寬度,pch = 點(diǎn)的類型,xlab = 橫坐標(biāo),ylab = 縱

40、坐標(biāo),xlim = 橫坐標(biāo)范圍,ylim = 縱坐標(biāo)范圍,也可以對整個要繪制圖形的各種參數(shù)進(jìn)行設(shè)定參見 par()102舉例:繪圖生成0到2之間的50個隨機(jī)數(shù),分別命名為x,yx - runif(50,0,2)y - runif(50,0,2)繪圖:將主標(biāo)題命名為“散點(diǎn)圖”, 橫軸命名為”橫坐標(biāo)”, 縱軸命名為“縱坐標(biāo)”plot(x, y, main=散點(diǎn)圖散點(diǎn)圖, xlab=橫坐標(biāo)橫坐標(biāo), ylab=縱縱坐標(biāo)坐標(biāo))text(0.6,0.6,text at (0.6,0.6)abline(h=.6,v=.6)103圖24 繪圖舉例104例:分步繪圖1.打開繪圖窗口,不繪制任何對象plot(x,

41、 y, type=n, xlab=, ylab=, axes=F)2.添加坐標(biāo)點(diǎn) points(x,y) 3.添加坐標(biāo)軸axis(1); 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 分步繪圖123456106一頁多圖圖26 一頁多圖par()par(mfrow=c(2,2).107在原有圖形上添加元素舉例:舉例:x - rnorm(100) # 生成隨機(jī)數(shù)hi

42、st(x,freq=F) # 繪制直方圖curve(dnorm(x),add=T) # 添加曲線h - hist(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(impurityra

43、te)reg-lm(impurityrate)abline(reg,col=red)summary(reg)110五 編寫函數(shù)111編程基礎(chǔ) R可以靈活的編寫程序,用戶自己編寫的程序可以直接調(diào)用。編程時無需聲明變量的類型,這與C,C+等語言不同?;靖袷?函數(shù)名函數(shù)名 - function(數(shù)據(jù)數(shù)據(jù),參數(shù)參數(shù)1= 默認(rèn)值默認(rèn)值,) 異常處理; 表達(dá)式(循環(huán)/判別); return(返回值); 函數(shù)內(nèi)部也可用#添加注釋112函數(shù)實(shí)例 圖28 函數(shù)實(shí)例 data2mat()113程序流程控制 ifif(條件) 表達(dá)式 if(條件) 表達(dá)式1 else 表達(dá)式2 舉例p = 0.03 if(p=0.05) print(p 0.05!)114循環(huán)循環(huán) for, whilefor(變量 in 向量) 表達(dá)式用法: for(i in 1:10) print(i)while(條件) 表達(dá)式 用法:i - 1while(i10) print(i); i - i + 1115返回值 返回值表示函數(shù)輸出的結(jié)果。 返回值必須是一個對象。 R默認(rèn)將最后一行作為返回值。 如果函數(shù)的結(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論