圖書進(jìn)階初步中文版_第1頁
圖書進(jìn)階初步中文版_第2頁
圖書進(jìn)階初步中文版_第3頁
圖書進(jìn)階初步中文版_第4頁
圖書進(jìn)階初步中文版_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、RforBeginnersEdition2.0Emmanuel ParadisInstitut des Sciences de lE´volution Universit´e Montpellier IIF-34095 Montpellier c´edex 05 France: paradisisem.univ-montp2.frCo-translated by: XF Wang, YH Xie, JT Li and GH Ding中文版說明“R for beginners”是一本公認(rèn)的經(jīng)典手冊,非常適合R的初學(xué)者。英文原版于2002年,而此稿是基于作者在2005

2、年重新修訂的第二版。Emmanuel Paradis博士稿提供了原版所有LATEX源文件。翻譯工作由四名志愿者共同完成(Chap12:;Chap3:;Chap4:負(fù)責(zé)本文檔的編輯校Chap57: 丁國徽)。由華東師范大學(xué)訂。衷心感謝!李東風(fēng)審閱了全稿并提出了大量寶貴意見。在此一并表示編譯倉促,差錯難免,亟盼諸R友襄正。任何意見請通過pwxf我們。譯者2006年4月?c 2002, 2005, Emmanuel ParadisPermission is granted to make and distribute copies, either in part or in full and in

3、any language, of this document on any support provided the above copyright notice is included in all copies. Permission is granted to translate this document, either in part or in full, in any language provided the above copyright notice is included.目錄11導(dǎo)言23357基本原理與概念. . . . . . . . . . . .

4、 . . . . . . . . . . . . . . . . . .基對象的產(chǎn)生,排列及刪除 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3R的數(shù)據(jù)操作991114151518191924262730323233.4對象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .在文件中讀寫數(shù)據(jù) . . . . . . . . . . . . .

5、. . . . . . . . . . . .數(shù)據(jù) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .生成數(shù)據(jù) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..2規(guī)則序列 . . . . . . . . . . . . . . . . . . . . . . . . . .隨機(jī)序列 . . . . . . . . . . . . . . . . . . . . . . . . . .3.5使用對象 . . . . . . . . . . .

6、 . . . . . . . . . . . . . . . . . . .....8創(chuàng)建對象 . . . . . . . . . . . . . . . . . . . . . . . . . .對象的類型轉(zhuǎn)換 . . . . . . . . . . . . . . . . . . . . . .運(yùn)算符 . . . . . . . . . . . . . . . . . . . . . . . . . . . .一個對象的數(shù)值:下標(biāo)系統(tǒng) . . . . . . . . . . . . .對象的名稱 . . . . . .

7、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .算和一些簡單的函數(shù) . . . . . . . . . . . . . . . .數(shù)據(jù)編數(shù)矩陣計算 . . . . . . . . . . . . . . . . . . . . . . . . . .4R繪圖3737373841424445494.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .管理繪圖.2打開多個繪圖設(shè)備 . . . . . . .

8、 . . . . . . . . . . . . . .圖形的分割 . . . . . . . . . . . . . . . . . . . . . . . . .4.54.6繪圖函數(shù) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .低級繪圖命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . .繪圖參數(shù) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .一個實(shí)例 . . . .

9、 . . . . . . . . . . . . . . . . . . . . . . . . . .grid 和lattice 包 . . . . . . . . . . . . . . . . . . . . . . . . . .5R的統(tǒng)計分析5656585965.4關(guān)于方差分析的一個簡單例子 . . . . . . . . . . . . . . . . . . .公式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .泛型函數(shù) . . . . . . . . . . . . . .

10、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .包6R編65656768踐循環(huán)和化 . . . . . . . . . . . . . . . . . . . . . . . . . . . .用R寫程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .編寫你的函數(shù) . . . . . . . . . . . . . . . . . . . . . . . . .

11、7R 相關(guān)的文獻(xiàn)721導(dǎo)言該手冊是關(guān)于R的一個入門.由于主要初學(xué)者,我將重點(diǎn)放在了對R的工的解釋上。R涉及廣泛,因此對于初學(xué)者來講,了解和掌握一些基本概念及原理是很有必要的。在打下扎實(shí)的基礎(chǔ)后,進(jìn)行更深入的學(xué)習(xí)將會變得輕松許多。本著深入淺出的,本手冊將大量配合圖表等形式,盡可能使用通俗的語言,使讀者容易理解而并不失細(xì)節(jié)。R是一個有著統(tǒng)計分析功能及強(qiáng)大作圖功能的軟件系統(tǒng),是由Ross Ihaka和Robert Gentleman1共同創(chuàng)立。R語言可以看作是由AT&T貝爾所創(chuàng)的S語言發(fā)展出的言1。因此,R即是一種軟件也可以說是一種語言。S語言現(xiàn)在主要內(nèi)含在由Insightful2公司經(jīng)營的

12、S-PLUS軟件中。R和S在設(shè)計理念上存在有著許多不同:關(guān)于這方面的詳細(xì)內(nèi)容大家可以參考Ihaka & Gentleman (1996) 或R-FAQ3,該文檔同時隨R一起發(fā)布。R是在GNU協(xié)議General Public Licence4下的,它的開發(fā)及維護(hù)現(xiàn)在則由R開發(fā)小組R Development Core Team具體負(fù)責(zé)。R的安裝文件有多種形式, 有在Unix 或Linux系統(tǒng)下所需的一些源代碼(主要用C及Fortran 編寫),及在Windows, Linux及Macintosh上使用的預(yù)編譯二進(jìn)制碼。這些安裝文件以及安裝說明都可以在Comprehensive R Arch

13、iveNetwork (CRAN)5于較新版本的Linux。上。該提供的關(guān)于Linux的安裝文件只適用參考CRAN。R內(nèi)含了許多實(shí)用的統(tǒng)計分析及作圖函數(shù)。作圖函數(shù)能將產(chǎn)生的圖片展 示在一個 的窗口中,并能將之保存為各種形式的文件(jpg, png, bmp, ps, pdf, emf, pictex, xfig; 具體形式取決于操作系統(tǒng))。統(tǒng)計分析的結(jié)果也能被直,一些中間結(jié)果(如P-值,回歸系數(shù),殘差等)既可保存到專門的接文件中,也可以直接用作進(jìn)一步的分析。在R語言中,使用者可以使用循環(huán)語句來連續(xù)分析多個數(shù)據(jù)集,也可將多 個不同的統(tǒng)計函數(shù)結(jié)合在一個語句中執(zhí)行更復(fù)雜的分析。R使用者還可以借鑒網(wǎng)上

14、提供的用S編寫的大量程序6,而且大多數(shù)被R直接調(diào)用。非專業(yè) 起初可能覺得R相對比較復(fù)雜。其實(shí),R的一個非常突出的優(yōu)點(diǎn)正是它的靈活性。一般的軟件往往會直接展示分析的結(jié)果,而R則將這些結(jié) 果都存在一個對象“object”里面,所以常常在分析執(zhí)行結(jié)束后并不顯示任何結(jié)1Ihaka R. & Gentleman R. 1996. R: a language for data analysis and graphics. Journal of Computational and Graphical Statistics 5: 299314.234For more information:56For

15、 example:1果。使用者可能會對此感到困惑,其實(shí)這樣的特點(diǎn)是非常有用的,因?yàn)槲覀?可以選擇的從結(jié)果中只抽出我們感 的部分。例如,我們要運(yùn)行20個回歸分析而只想比較其回歸系數(shù),在R中就可以選擇只顯示所有分析得出的回歸系 數(shù),這樣結(jié)果僅僅占了一排,而用有些軟件可能會一下打開20個窗口。而在 下面的章節(jié)中,我們會看到 能展示R相比傳統(tǒng)軟件更為靈活優(yōu)越的例子。2與概念2如果R已經(jīng)被安裝在你的計算機(jī)中,它就能立即運(yùn)行一些可執(zhí)行令了。R默認(rèn)令提示符是>,它表示正在等待輸入命令。如在Windows系統(tǒng)中打開Rgui.exe,就能直接運(yùn)行下拉菜單中的一些操作命令(如,打開文件. . . )。到這里

16、,有些人可能會急著想知道學(xué)習(xí)這些內(nèi)容前,了解掌握一些R的基本工章所要講的主要內(nèi)容。的語句命令。其實(shí),在是非常有必要的。這正是本本章首先簡要描述R的工。在第二節(jié)中,我將介紹一些基本的賦值分配(“assign”) 的操作,如怎樣產(chǎn)生對象(object),如何操作管理這些對象等.最后簡要介紹R中非常有用的。2.1因?yàn)镽是一種編程語言,一些對編程不太熟悉的人可能會望而卻步。這種 其實(shí)是完全沒有必要,首先,R是一種解釋型語言,而不是編譯語言,也就意味著輸入令能夠直接被執(zhí)行,而不需要像一些語言要首先一個完整的程序形式(如C,F(xiàn)ortan, Pascal, . . . )。第二,R的語法非常之簡單和直觀。例

17、如,線性回歸令lm(y x) 表示“以x為自變量,y為反應(yīng)量來擬合一個線性模型”。合法的R函數(shù)總是帶有 圓括號的形式,即使括號內(nèi)沒有內(nèi)容(如,ls()。如果直接輸入函數(shù)名而不輸 入圓括號,R則會自動顯示該函數(shù)的一些具體內(nèi)容。在本手冊中除在部分文字 已作出清楚的說明外,所有的函數(shù)后都接有圓括號以區(qū)別于對象(object)。當(dāng)R運(yùn)行時,所有變量,數(shù)據(jù),函數(shù)及結(jié)果對象(objects)的形式存在計算機(jī)的活動內(nèi)存中,并冠有相應(yīng)的名字代號。我們可以通過用一些運(yùn)算 符(如算術(shù),邏輯,比較等)和一些函數(shù)(其本身也是對象)來對這些對象進(jìn)行操留在下章討論(p. 26). 關(guān)于R中的函數(shù)可用作。運(yùn)算操作非常簡單,

18、其下面的圖例來形象的描述:arguments options =result上圖中的參量(argument)可能是一些對象(如數(shù)據(jù),方程,算式. . . )。有些參量在函數(shù)里被預(yù)設(shè)為缺省值,用戶則可按需對其作個別的修改。所以運(yùn)行一個R函數(shù)可能不需要設(shè)定任何參量,是所有的參量都可以被默認(rèn)為缺3functiondefault arguments省值,當(dāng)然也有可能該函數(shù)本身就不含任何參量。由于這里主要是講述R的工,對R函數(shù)的介紹將不再展開,在后面的章節(jié)中我們會看到關(guān)于構(gòu)建及 使用各種函數(shù)的詳細(xì)內(nèi)容(p. 68)。在R中進(jìn)行的所有操作都是在活動內(nèi)存中的對象的, 因此就不涉及到任何臨時文件夾的使用(Fi

19、g. 1)。對數(shù)據(jù),結(jié)果或圖表的輸入與輸出都是通過在對計算機(jī)硬盤中的文件讀寫而實(shí)現(xiàn)。用戶通過輸入一些命令調(diào)用函 數(shù),分析得出的結(jié)果可以被直接顯示在屏幕上,也可以被存入某個對象或被 寫入硬盤(如圖片對象)。因?yàn)楫a(chǎn)生的結(jié)果本身就是一種對象,所以它們也能被視為數(shù)據(jù)并能像一般數(shù)據(jù)那樣被處理分析。數(shù)據(jù)文件即可從本地磁盤也可通過網(wǎng)絡(luò)傳輸從服務(wù)器端獲得。./library/base/stast/graphics/.keyboardcommands- functions and operators ?library offunctionsmouse?-data“data” objectsfilesintern

20、et?)?screen6?. . .“results” objectsActive memoryHard disk圖 1: R工示意圖.所有能使用的R函數(shù)都被包含在一個庫(library) 中, 該庫存放在磁盤的R HOME/library 目錄下(R HOME 是最初安裝R的地址)。這個目錄下含有具有各種功能的包(packages ),各個包也是按照目錄的方式組織起來的。其中名為base的包可以算是R的,因?yàn)樗鼉?nèi)嵌了R語言中所有像數(shù)據(jù)讀寫與操作這些最基本的函數(shù)。在上述目錄中的每個包內(nèi), 一個子目錄R, 這個目錄里又都含有一個與此包同名的文件(例如在包base中,有這樣一個文 件R HOME/

21、library/base/R/base)。該文件正是存放所有函數(shù)的地方。R語言中最簡單令莫過于通過輸入一個對象的名字來顯示其。例如,一個名為n的對象,其內(nèi)容是數(shù)值10:> n1 10方括號中的數(shù)字1表示從n的第一個元素開始顯示。其實(shí)該命令的功能在4PSJPEG這里于函數(shù)print 相似,輸出結(jié)果與print(n) 相同(但有些情在一個函數(shù)或循環(huán)中時,就必須得用print函數(shù))。對象的名字必須是以一個字母開頭(AZ 或az),,例如內(nèi)嵌以包含字母,數(shù)字(09),點(diǎn)(.)及下劃線( ). 因?yàn)镽對對象的名字區(qū)分大小寫,所以x 和X就可以代表兩個完全不同的對象(在Windows操作系統(tǒng)中也是如

22、此)。2.2對象的產(chǎn)生,排列及刪除一個對象可以通過賦值操作來產(chǎn)生,R語言中的賦值(“assign”) 符號一般是由一個尖括號與一個負(fù)號組成的箭頭形標(biāo)志。該符號可以是從左到右的方 向,也可以相反:> n> n 1> 5> n 1<-1515->n5<-<->>>xXx1101> X 1110如果該對象已經(jīng)存在,那么它以前的值將會自動被新值沖掉(這種修改只 會影響內(nèi)存中的數(shù)據(jù),操作結(jié)果暫時 被保存到硬盤中)。在R中給對象賦值有多種形式,可以是直接賦一個數(shù)值,也可以是一個算式或一個函數(shù)的結(jié)果:> n> n 1>

23、 n> n 1<- 10 + 212<- 3 + rnorm(1)2.208807運(yùn)行rnorm(1) 將產(chǎn)生一個服從平均數(shù)為0標(biāo)準(zhǔn)差為1的標(biāo)準(zhǔn)正態(tài)分布的隨量(p. 18)。當(dāng)然你也可以只是輸入函數(shù)或表而不把它的結(jié)果賦給某個對象,但如果這樣在窗口中展示的結(jié)果將被保存到內(nèi)存中:5> (10 + 2) * 51 60本文中,在不影響讀者理解的情,一些賦值符號將會被省略。函數(shù)ls的功能是顯示所有在內(nèi)存中的對象:只會列出對象名,如:> name <- "Carmen" n1 <- 10; n2 <- 100; m <- 0.5&

24、gt; ls()1 "m""n1""n2""name"注意在R中應(yīng)該用分號來隔開同一行中的不同命令語句。如果只要顯示出 在名稱中帶有某個指定字符的對象,則通過設(shè)定選項(xiàng)pattern 來實(shí)現(xiàn)(可簡寫為pat) ):> ls(pat = "m")1 "m""name"如果進(jìn)一步限為顯示在名稱中以某個字母開頭的對象,則可:> ls(pat = "m")1 "m"運(yùn)行函數(shù)ls.str()將會展示內(nèi)存中所有對象的詳

25、細(xì)信息:> ls.str()m :num 0.5 n1 :num 10 n2 :num 100 name :chr "Carmen"選項(xiàng)pattern在這里同樣適用。在ls.str函數(shù)中另一個非常有用的選項(xiàng)是max.level, 它將規(guī)定顯示所有關(guān)對象信息的詳細(xì)級別。缺省情況下,ls.str 將會列出關(guān)于對象的所有信息,包括數(shù)據(jù)框,矩陣,數(shù)據(jù)列表的列數(shù)信息。因此展示結(jié)果可能會很長。但如果設(shè)定max.level =-1 就可以避免這種情況了:>> MM <- data.frame(n1, n2, m)ls.str(pat = "M"

26、): data.frame:1 obs. of3 variables:$n1:n2:m :numnum num101000.5> ls.str(pat="M",M : data.frame:max.level=-1)1 obs. of3 variables:要在內(nèi)存中刪除某個對象,可利用函數(shù)rm: 運(yùn)行rm(x)將會刪除對象x,運(yùn)行rm(x,y) 將會刪除對象x和y,而運(yùn)行rm(list=ls()則會刪除內(nèi)存中的所有對象. 在上面所講的ls() 函數(shù)中的一些選項(xiàng)同樣也可以運(yùn)用到rm中來,以選擇的刪除一些對象,如: rm(list=ls(pat="m"

27、;)。62.3R中給予的能提供關(guān)于如何使用函數(shù)的非常有用的信息。關(guān)于某個特定函數(shù)的幫助能夠直接被調(diào)出來,如運(yùn)行:> ?lm會立即顯示關(guān)于函數(shù)lm()(線性模型)的幫助頁面。命令help(lm) 和help("lm")具有同樣的效果。但在形式,如:關(guān)于某特殊語法意義字符的幫助時必須用后一種> ?*Error: syntax error> help("*") Arithmeticpackage:baseR DocumentationArithmetic Operators.啟動幫助將會打開一個頁面(取決于操作系統(tǒng)),第一行一般會顯示某函數(shù)

28、或操作命令的所屬的包(package),然后是標(biāo)題,標(biāo)題下面是則是一些詳細(xì)信息。Description: brief description.Usage: for a function, gives the name with all its arguments and the possible options (with the corresponding default values); for an operator gives the typical use.Arguments: for a function, details each of its arguments.Details

29、: detailed description.Value: if applicable, the type of object returned by the function or the oper- ator.See Also: other help pages close or similar to the present one.Examples: some examples which can generally be executed without opening the help with the function example.對初學(xué)者而言,參考幫助中Examples部分的

30、信息是很有用的。而一般 應(yīng)該仔細(xì)閱讀Arguments中的一些說明也是非常有必要的。幫助中還包含了其它一些說明部分,如Note, References或Author(s)等。默認(rèn)狀態(tài)下,函數(shù)help只會在被載入內(nèi)存中的搜索。選項(xiàng)try.all.package在缺省值是FALSE, 但如果把它設(shè)為TRUE,則可在所有進(jìn)行搜索:7> help("bs")No documentation for bs in specified packages and libraries: you could try help.search("bs")> help

31、("bs", try.all.packages = TRUE)Help for topic bsis not in any loaded packagebut can befoundinthefollowing packages:PackagesplinesLibrary/usr/lib/R/library但注意在這種情,顯示關(guān)于函數(shù)bs的幫助頁面,如果使用者確沒有被載入內(nèi)存時,可以使用package這個選實(shí)想打開這樣的頁面而所屬項(xiàng):> help("bs", package = "splines")bspackage:splin

32、esR DocumentationB-Spline Basis for Polynomial SplinesDescription:Generate the B-spline basis matrix for a polynomial spline.Html格式的幫助可以通過輸入下面的函數(shù)啟動> help.start()在html格式的幫助頁面中還可以使用進(jìn)行搜索。在See Also部分中,可以通過超文本到其他相關(guān)函數(shù)的幫助頁面。使用的搜索在R中也可以通過函數(shù)help.search來實(shí)現(xiàn)。這種方法能在所有已安裝的包中搜索包含給定字符串的相關(guān)內(nèi)容。例如, 運(yùn)行help.search(&qu

33、ot;tree")會列出所有在幫助頁面含有“tree”的函數(shù)。注意如果有一些最近裝的,應(yīng)該首先使用函數(shù)help.search中的rebuild選項(xiàng)來刷新數(shù)據(jù)庫(e.g.,help.search("tree", rebuild = TRUE)。使用函數(shù)apropos則能找出所有在名字中含有指定字符串的函數(shù),但只會在被載入內(nèi)存中的進(jìn)行搜索:> apropos(help)1 "help"4 "help.start"".helpForCall" "help.search"83R的數(shù)據(jù)操作

34、3.1對象我們已經(jīng)看到R通過一些對象來運(yùn)行,當(dāng)然首先這些對象是用它們的名稱來刻畫的,其次也通過對象的數(shù)據(jù)類型即屬性來刻畫。為了理解這些屬性的用處,我們以一個在1,2,3中取值的變量為例:這個變量可以是一個整數(shù)變量(例如巢中蛋的個數(shù)),或者也可以是一個分類變量的編碼(例如某些甲殼類動物的三種:雄、雌和雌雄同體)。顯然對這個變量的統(tǒng)計分析在以上兩例中將是不相同的,對象的屬性在R中提供著所需的信息。更技術(shù)性也更一般地說,對于作用于一個對象的函 數(shù),其表現(xiàn)將取決于對象的屬性。所有的對象兩個內(nèi)在屬性:類型和長度。類型是對象元素的基本種類,共有四種:數(shù)值型,字符型,復(fù)數(shù)型7和邏輯型(FALSE或TRUE)

35、,雖然也存在其它的類型,但是并不能用來表示數(shù)據(jù),例如函數(shù)或表;長度是對象中元素的數(shù)目。對象的類型和長度可以分別通過函數(shù)mode和length得到。> x <- 1> mode(x)1 "numeric"> length(x)1 1> A <- "Gomphotherium" compar <- TRUE; z <- 1i> mode(A); mode(compar); mode(z)111"character""logical" "complex&qu

36、ot;無論什么類型的數(shù)據(jù),數(shù)據(jù)總是用NA(不可用)來表示;對很大的數(shù) 值則可用指數(shù)形式表示:> N <- 2.1e23> N1 2.1e+23R可以正確地表示無窮的數(shù)值,如用Inf和-Inf表示±,或者用NaN(非數(shù)字)表示不是數(shù)字的值。7本手冊中不討論復(fù)數(shù)型9> x <- 5/0> x1 Inf> exp(x)1 Inf> exp(-x)1> x 10- x NaN字符型的值輸入時須加上號",如果需要號的話,可以讓它跟在反斜杠后面;這兩個字符合一起"在某些函數(shù)如cat的輸出顯示或write.table寫入磁盤

37、(參見p. 14,函數(shù)的qmethod選項(xiàng))時會被以特殊的方式處理。> x <- "Double quotes " delimitate Rs strings."> x1 "Double quotes " delimitate Rs strings."> cat(x)Double quotes " delimitate Rs strings.也有另一種表示字符型變量的方法,即用單引號()來界定變量,這種情不需要用反斜杠來號(但是單引號時必須要用?。?gt; x <- Double quotes&

38、gt; x1 "Double quotes "" delimitate Rs strings.delimitate Rs strings."下表給出了表示數(shù)據(jù)的對象的類別概覽:對象類型是否同一個對象中有多種類型?數(shù)值型,字符型,復(fù)數(shù)型,或 邏輯型數(shù)值型或 字符型數(shù)值型,字符型,復(fù)數(shù)型,或 邏輯型數(shù)值型,字符型,復(fù)數(shù)型,或 邏輯型數(shù)值型,字符型,復(fù)數(shù)型,或 邏輯型數(shù)值型,字符型,復(fù)數(shù)型,或 邏輯型數(shù)值型,字符型,復(fù)數(shù)型,邏輯型, 函數(shù),表,. . .否否否否是否是因子數(shù)組矩陣 數(shù)據(jù)框時間序列(ts)列表10是一個變量,其意思也即人們通常認(rèn)為的那樣;因子是一

39、個分類變量;數(shù)組是一個k維的數(shù)據(jù)表;矩陣是數(shù)組的一個特例,其維數(shù)k = 2。注意,數(shù)組或者矩陣中的所有元素都必須是同一種類型的;數(shù)據(jù)框是由一個或幾個和(或)因子,它們必須是等長的,但可以是不同的數(shù)據(jù)類型;“ts”表示時間序列數(shù)據(jù),它包含一些額外的屬性,例如頻率和時間;列表可以包含任何類型的對象,包括列表!對于一個,用它的類型和長度足夠描述數(shù)據(jù);而對其它的對象則另需一些額外信息,這些信息由外在的屬性給出。這些屬性中的是表示對象維 數(shù)的dim,比如一個2行2列的的矩陣,它的dim是一對數(shù)值2,2,但是其長度 是4。3.2在文件中讀寫數(shù)據(jù)對于在文件 和寫入的工作,R使用工作目錄來完成??梢允褂妹頶

40、etwd() (獲得工作目錄 )來找到目錄, 使用命令setwd("C:/data") 或者setwd("/home/paradis/R") 來改變目錄。如果一個文件不在工作目錄里則必須給出它的路徑8。R可以用下面的函數(shù)在文本文件(ASCII)中的數(shù)據(jù):read.table(其中有若干參數(shù),見后文),scan和read.fwf。R也可以以其他格式的文件(Excel, SAS, SPSS, . . . ) 和SQL類型的數(shù)據(jù)庫,但是基礎(chǔ)并不包含所需的這些函數(shù)。這些功能函數(shù)對于R的高級應(yīng)用是十分有用的,但是我 們在這里將文件限定在ASCII格式。函數(shù)read

41、.table用來創(chuàng)建一個數(shù)據(jù)框,所以它是表格形式的數(shù)據(jù)的主要方法。舉例來說,對于一個名為data.dat的文件,命令:> mydata <- read.table("data.dat")將創(chuàng)建一個數(shù)據(jù)框名為mydata, 數(shù)據(jù)框中每個變量也被命名,缺省值為V1, V2, . . . 并且可以單獨(dú)地每個變量, 代碼為:mydata$V1,mydata$V2, . . . , 或者用mydata"V1", mydata"V2", . . . , 或者還有法,mydata, 1, mydata,2 , . . . 9 這里有一些

42、選項(xiàng)的缺省值(即如果用戶不設(shè)定那么R將自動使用的值)見于下表:read.table(file, header = FALSE, sep = "", quote = """, dec = ".",s, s, as.is = FALSE, na.strings = "NA", colClasses = NA, nrows = -1,skip = 0, s = TRUE, fill = !blank.lines.skip,8在Windows中,為Rgui.ex

43、e創(chuàng)建一個快捷方式是比較有用的,在快捷方式“屬性”的“起始位置”中改變目錄,然后用此快捷方式啟動R時這個目錄就會成為工作目錄9注 意 這 幾 種 方 法 的 結(jié) 果 是 有 區(qū) 別 的 :mydata$V1和mydata, 1是而mydata"V1"是數(shù)據(jù)框。后面(p. 19)將會講到關(guān)于處理對象的詳情。,11strip.white = FALSE,blank.lines.skip=TRUE,comment.char="#")read.table的幾個變種因?yàn)槭褂昧瞬煌娜笔≈悼梢杂迷趲追N不同情況下:read.csv(file, header = TRU

44、E, sep = ",", quote=""", dec=".",fill = TRUE, .)read.csv2(file, header = TRUE, sep = "", quote=""", dec=",", fill = TRUE, .)read.delim(file, header = TRUE, sep = "t", quote=""", dec=".", fill = T

45、RUE, .)read.delim2(file, header = TRUE, sep = "t", quote=""", dec=",", fill = TRUE, .)函數(shù)scan比read.table要更加靈活,它們的區(qū)別之一是前者可以指定變量的類型,例如:12file文件名(包在""內(nèi),或使用一個字符型變量),可能需要全路徑(注意即使是在Windows下,符號 也不包含在內(nèi),必須用替換),或者一個URL(http:/.)(用URL對文件)header一個邏輯值(FALSE or TRUE),用來反

46、映這個文件的第一行是否包含變量名sep文件中的字段分離符,例如對用制表符分隔的文件使用sep="t"quote指定用于包圍字符型數(shù)據(jù)的字符dec用來表示小數(shù)點(diǎn)的字符s保存著行名的,或文件中一個變量的序號或名字,缺省時行號取為1, 2, 3, . . .s指定列名的字符型(缺省值是:V1, V2, V3, . . . )as.is是否將字符型變量轉(zhuǎn)化為因子型變量(如果值為FALSE),或者仍 將其保留為字符型(TRUE)。as.is可以是邏輯型,數(shù)值型或者字符型 ,用來 變量是否被保留為字符。na.strings代表數(shù)據(jù)的值(轉(zhuǎn)化為NA)col

47、Classes指定各列的數(shù)據(jù)類型的一個字符型nrows可以的最大行數(shù)(忽略負(fù)值)skip在數(shù)據(jù)前跳過的行數(shù)s如果為TRUE,則檢查變量名是否在R中有效fill如果為TRUE且非所有的行中變量數(shù)目相同,則用空白填補(bǔ)strip.white在sep已指定的情,如果為TRUE,則刪除字符型變量前后多余的空格blank.lines.skip如果為TRUE,忽略空白行comment.char一個字符用來在數(shù)據(jù)文件中寫注釋,以這個字符開頭的行將被忽略(要禁用這個參數(shù),可使用comment.char = "")> mydata <- scan("d

48、ata.dat", what = list("", 0, 0)了文件data.dat中三個變量,第一個是字符型變量,后兩個是數(shù)值型變量。另一個重要的區(qū)別在于scan()可以用來創(chuàng)建不同的對象, 陣,數(shù)據(jù)框,列表. . . 在上面的例子中,mydata是一個有三個,矩的列表。,也就是說,如果what被省略,scan()將創(chuàng)建一個數(shù)值型向的數(shù)據(jù)類型與缺省類型或指定類型不符,則將返回一個錯誤信在缺省情量。如果息。這些選項(xiàng)在下面進(jìn)行說明。scan(file = "", what = double(0), nmax = -1, n = -1, sep =

49、 "",quote = if (sep="n") "" else """, dec = ".", skip = 0, nlines = 0, na.strings = "NA",flush = FALSE, fill = FALSE, strip.white = FALSE, quiet = FALSE,blank.lines.skip= TRUE,multi.line=TRUE,comment.char="")函數(shù)read.fwf可以用來文件中

50、一些固定寬度格式的數(shù)據(jù):read.fwf(file, widths, sep="t", as.is = FALSE,skip = 0, s, s, n = -1, .)13file文件名(在""之內(nèi)), 可能包含它的路徑( 符號 不使用, 必須用/替代, 即使是在Windows下面) , 或者使用一個URL(http:/.); 如果file=”, 數(shù)據(jù)從鍵盤輸入( 使用一個空白行終止輸入)what指定數(shù)據(jù)的類型(缺省值為數(shù)值型)nmax要數(shù)據(jù)的最大數(shù)量,如果what是一個列表,nmax則是可以 的行數(shù)(在缺省情,scan到

51、文件最末端為止的所有數(shù)據(jù))n要數(shù)據(jù)的最大數(shù)量(在缺省情,沒有限制)sep文件中的字段分隔符quote用來包圍字符型值dec用來表示小數(shù)點(diǎn)的字符skip在數(shù)據(jù)前跳過的行數(shù)nlines要的行數(shù)na.string表示數(shù)據(jù)的字符串(轉(zhuǎn)化為為NA)flush一個邏輯值,如果為TRUE,當(dāng)完指定列數(shù)后scan將轉(zhuǎn)到下一行(這樣就用戶在數(shù)據(jù)文件中添加注釋,即添加在指定列數(shù)之后)fill如果為TRUE,且非所有的行中變量數(shù)目相同,則用空白填補(bǔ)strip.white在sep已指定的情,如果為TRUE,則刪除字符型變量前后多余的空格quiet一個邏輯值,如果為FALSE,scan顯示一行信息說明哪些字段被blan

52、k.lines.skip如果為TRUE,忽略空白行multi.line當(dāng)what是一個列表時,若為FALSE則表示列表中每個的所有變量都在同一行中comment.char指定注釋開始字符,一行中以這個字符開頭的部分將被忽略(缺是禁 用此選項(xiàng))除 了widths用 來 說 明字 段 的 寬 度 外 , 選 項(xiàng)與read.table()基本相同。舉例來說, 如果在一個名為data.txt的文件中有一組如右所示的數(shù)據(jù),可以這些數(shù)據(jù)用下面令:>>mydata <- read.fwf("data.txt", widths=c(1, 4,mydata3)V1A A B

53、 B C CV21.501.551.601.651.701.75V123456數(shù)據(jù)3.3函數(shù)write.table可以在文件中寫入一個對象,一般是寫一個數(shù)據(jù)框,也可以是其它類型的對象(,矩陣. . . )。參數(shù)和選項(xiàng):write.table(x, file = "", append = FALSE, quote = TRUE, sep = "",eol = "n",na = "NA", dec = ".", s = TRUE,

54、s=TRUE,qmethod=c("escape","double")14A1.501.2A1.551.3 B1.601.4 B1.651.5 C1.701.6 C1.751.7若想用更簡單的方法將一個對象寫入文件, 可以使用命令write(x,file ="data.txt"),其中x是對象的名字( 它可以是, 矩陣, 或者數(shù)組)。這里有兩個選項(xiàng):nc(或者ncol), 用來定義文件中的列數(shù)( 在缺, 如果x是字符型數(shù)據(jù), 則nc=1; 對于其它數(shù)據(jù)類型nc=5) ,省情和append(一個邏輯值),若為TRUE則添加數(shù)據(jù)時不刪除那

55、些可能已存在 在文件中的數(shù)據(jù);若為FALSE(缺省值)則刪除文件中已存在的數(shù)據(jù)。要一組任意數(shù)據(jù)類型的對象, 我們可以使用命令save(x, y, z,file= "xyz.RData")??梢允褂眠x項(xiàng)ASCIITRUE使得數(shù)據(jù)在不同的之間更簡易轉(zhuǎn)移。數(shù)據(jù)(用R的術(shù)語來說叫做工作空間)可以在使用load("xyz. RData")之后被加載到內(nèi)存中。函數(shù)save.image()是save(list =ls(all=TRUE), file=".RData")的一個簡捷方式。3.4生成數(shù)據(jù)3.4.1規(guī)則序列例如一個從1到30的規(guī)則整數(shù)序列,

56、可以這樣產(chǎn)生:> x <- 1:30這個結(jié)果x有30個元素。算子:的優(yōu)先級可從如下表中看出:> 1:10-11 0 1 2 3 4 5 6 7 8 9> 1:(10-1)15x要寫入的對象的名稱file文件名(缺省時對象直接被“寫”在屏幕上)append如果為TRUE則在寫入數(shù)據(jù)時不刪除目標(biāo)文件中可能已存在的數(shù)據(jù),采取往后 添加的方式quote一個邏輯型或者數(shù)值型 :如果為TRUE,則字符型變量和因子寫在號""中;若quote是數(shù)值型 則代表將欲寫在""中的那些列的列標(biāo)。(兩種情 變量名都會被寫在""中;若quote = FALSE則變量名不包含在 號中)sep文件中的字段分隔符eol使用在每行最后的字符("n"表示回車)na表示數(shù)據(jù)的字符dec用來表示小數(shù)點(diǎn)的字符s一個邏輯值,決定行名是否寫入文件;或指定要作為行名寫入文件的字符型s一個邏輯值(決定列名是否寫入文件);或指定一個要作為列名寫入文件中 的字符型qmethod若quote=TRUE, 則此參數(shù)用來指定字符型變量中的

溫馨提示

  • 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

提交評論