




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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的初學者。英文原版于2002年,而此稿是基于作者在2005
2、年重新修訂的第二版。Emmanuel Paradis博士稿提供了原版所有LATEX源文件。翻譯工作由四名志愿者共同完成(Chap12:;Chap3:;Chap4:負責本文檔的編輯校Chap57: 丁國徽)。由華東師范大學訂。衷心感謝!李東風審閱了全稿并提出了大量寶貴意見。在此一并表示編譯倉促,差錯難免,亟盼諸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導言23357基本原理與概念. . . . . . . . . . . .
4、 . . . . . . . . . . . . . . . . . .基對象的產生,排列及刪除 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3R的數據操作991114151518191924262730323233.4對象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .在文件中讀寫數據 . . . . . . . . . . . . .
5、. . . . . . . . . . . .數據 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .生成數據 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..2規(guī)則序列 . . . . . . . . . . . . . . . . . . . . . . . . . .隨機序列 . . . . . . . . . . . . . . . . . . . . . . . . . .3.5使用對象 . . . . . . . . . . .
6、 . . . . . . . . . . . . . . . . . . .....8創(chuàng)建對象 . . . . . . . . . . . . . . . . . . . . . . . . . .對象的類型轉換 . . . . . . . . . . . . . . . . . . . . . .運算符 . . . . . . . . . . . . . . . . . . . . . . . . . . . .一個對象的數值:下標系統(tǒng) . . . . . . . . . . . . .對象的名稱 . . . . . .
7、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .算和一些簡單的函數 . . . . . . . . . . . . . . . .數據編數矩陣計算 . . . . . . . . . . . . . . . . . . . . . . . . . .4R繪圖3737373841424445494.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .管理繪圖.2打開多個繪圖設備 . . . . . . .
8、 . . . . . . . . . . . . . .圖形的分割 . . . . . . . . . . . . . . . . . . . . . . . . .4.54.6繪圖函數 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .低級繪圖命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . .繪圖參數 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .一個實例 . . . .
9、 . . . . . . . . . . . . . . . . . . . . . . . . . .grid 和lattice 包 . . . . . . . . . . . . . . . . . . . . . . . . . .5R的統(tǒng)計分析5656585965.4關于方差分析的一個簡單例子 . . . . . . . . . . . . . . . . . . .公式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .泛型函數 . . . . . . . . . . . . . .
10、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .包6R編65656768踐循環(huán)和化 . . . . . . . . . . . . . . . . . . . . . . . . . . . .用R寫程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .編寫你的函數 . . . . . . . . . . . . . . . . . . . . . . . . .
11、7R 相關的文獻721導言該手冊是關于R的一個入門.由于主要初學者,我將重點放在了對R的工的解釋上。R涉及廣泛,因此對于初學者來講,了解和掌握一些基本概念及原理是很有必要的。在打下扎實的基礎后,進行更深入的學習將會變得輕松許多。本著深入淺出的,本手冊將大量配合圖表等形式,盡可能使用通俗的語言,使讀者容易理解而并不失細節(jié)。R是一個有著統(tǒng)計分析功能及強大作圖功能的軟件系統(tǒng),是由Ross Ihaka和Robert Gentleman1共同創(chuàng)立。R語言可以看作是由AT&T貝爾所創(chuàng)的S語言發(fā)展出的言1。因此,R即是一種軟件也可以說是一種語言。S語言現(xiàn)在主要內含在由Insightful2公司經營的
12、S-PLUS軟件中。R和S在設計理念上存在有著許多不同:關于這方面的詳細內容大家可以參考Ihaka & Gentleman (1996) 或R-FAQ3,該文檔同時隨R一起發(fā)布。R是在GNU協(xié)議General Public Licence4下的,它的開發(fā)及維護現(xiàn)在則由R開發(fā)小組R Development Core Team具體負責。R的安裝文件有多種形式, 有在Unix 或Linux系統(tǒng)下所需的一些源代碼(主要用C及Fortran 編寫),及在Windows, Linux及Macintosh上使用的預編譯二進制碼。這些安裝文件以及安裝說明都可以在Comprehensive R Arch
13、iveNetwork (CRAN)5于較新版本的Linux。上。該提供的關于Linux的安裝文件只適用參考CRAN。R內含了許多實用的統(tǒng)計分析及作圖函數。作圖函數能將產生的圖片展 示在一個 的窗口中,并能將之保存為各種形式的文件(jpg, png, bmp, ps, pdf, emf, pictex, xfig; 具體形式取決于操作系統(tǒng))。統(tǒng)計分析的結果也能被直,一些中間結果(如P-值,回歸系數,殘差等)既可保存到專門的接文件中,也可以直接用作進一步的分析。在R語言中,使用者可以使用循環(huán)語句來連續(xù)分析多個數據集,也可將多 個不同的統(tǒng)計函數結合在一個語句中執(zhí)行更復雜的分析。R使用者還可以借鑒網上
14、提供的用S編寫的大量程序6,而且大多數被R直接調用。非專業(yè) 起初可能覺得R相對比較復雜。其實,R的一個非常突出的優(yōu)點正是它的靈活性。一般的軟件往往會直接展示分析的結果,而R則將這些結 果都存在一個對象“object”里面,所以常常在分析執(zhí)行結束后并不顯示任何結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果。使用者可能會對此感到困惑,其實這樣的特點是非常有用的,因為我們 可以選擇的從結果中只抽出我們感 的部分。例如,我們要運行20個回歸分析而只想比較其回歸系數,在R中就可以選擇只顯示所有分析得出的回歸系 數,這樣結果僅僅占了一排,而用有些軟件可能會一下打開20個窗口。而在 下面的章節(jié)中,我們會看到 能展示R相比傳統(tǒng)軟件更為靈活優(yōu)越的例子。2與概念2如果R已經被安裝在你的計算機中,它就能立即運行一些可執(zhí)行令了。R默認令提示符是>,它表示正在等待輸入命令。如在Windows系統(tǒng)中打開Rgui.exe,就能直接運行下拉菜單中的一些操作命令(如,打開文件. . . )。到這里
16、,有些人可能會急著想知道學習這些內容前,了解掌握一些R的基本工章所要講的主要內容。的語句命令。其實,在是非常有必要的。這正是本本章首先簡要描述R的工。在第二節(jié)中,我將介紹一些基本的賦值分配(“assign”) 的操作,如怎樣產生對象(object),如何操作管理這些對象等.最后簡要介紹R中非常有用的。2.1因為R是一種編程語言,一些對編程不太熟悉的人可能會望而卻步。這種 其實是完全沒有必要,首先,R是一種解釋型語言,而不是編譯語言,也就意味著輸入令能夠直接被執(zhí)行,而不需要像一些語言要首先一個完整的程序形式(如C,F(xiàn)ortan, Pascal, . . . )。第二,R的語法非常之簡單和直觀。例
17、如,線性回歸令lm(y x) 表示“以x為自變量,y為反應量來擬合一個線性模型”。合法的R函數總是帶有 圓括號的形式,即使括號內沒有內容(如,ls()。如果直接輸入函數名而不輸 入圓括號,R則會自動顯示該函數的一些具體內容。在本手冊中除在部分文字 已作出清楚的說明外,所有的函數后都接有圓括號以區(qū)別于對象(object)。當R運行時,所有變量,數據,函數及結果對象(objects)的形式存在計算機的活動內存中,并冠有相應的名字代號。我們可以通過用一些運算 符(如算術,邏輯,比較等)和一些函數(其本身也是對象)來對這些對象進行操留在下章討論(p. 26). 關于R中的函數可用作。運算操作非常簡單,
18、其下面的圖例來形象的描述:arguments options =result上圖中的參量(argument)可能是一些對象(如數據,方程,算式. . . )。有些參量在函數里被預設為缺省值,用戶則可按需對其作個別的修改。所以運行一個R函數可能不需要設定任何參量,是所有的參量都可以被默認為缺3functiondefault arguments省值,當然也有可能該函數本身就不含任何參量。由于這里主要是講述R的工,對R函數的介紹將不再展開,在后面的章節(jié)中我們會看到關于構建及 使用各種函數的詳細內容(p. 68)。在R中進行的所有操作都是在活動內存中的對象的, 因此就不涉及到任何臨時文件夾的使用(Fi
19、g. 1)。對數據,結果或圖表的輸入與輸出都是通過在對計算機硬盤中的文件讀寫而實現(xiàn)。用戶通過輸入一些命令調用函 數,分析得出的結果可以被直接顯示在屏幕上,也可以被存入某個對象或被 寫入硬盤(如圖片對象)。因為產生的結果本身就是一種對象,所以它們也能被視為數據并能像一般數據那樣被處理分析。數據文件即可從本地磁盤也可通過網絡傳輸從服務器端獲得。./library/base/stast/graphics/.keyboardcommands- functions and operators ?library offunctionsmouse?-data“data” objectsfilesintern
20、et?)?screen6?. . .“results” objectsActive memoryHard disk圖 1: R工示意圖.所有能使用的R函數都被包含在一個庫(library) 中, 該庫存放在磁盤的R HOME/library 目錄下(R HOME 是最初安裝R的地址)。這個目錄下含有具有各種功能的包(packages ),各個包也是按照目錄的方式組織起來的。其中名為base的包可以算是R的,因為它內嵌了R語言中所有像數據讀寫與操作這些最基本的函數。在上述目錄中的每個包內, 一個子目錄R, 這個目錄里又都含有一個與此包同名的文件(例如在包base中,有這樣一個文 件R HOME/
21、library/base/R/base)。該文件正是存放所有函數的地方。R語言中最簡單令莫過于通過輸入一個對象的名字來顯示其。例如,一個名為n的對象,其內容是數值10:> n1 10方括號中的數字1表示從n的第一個元素開始顯示。其實該命令的功能在4PSJPEG這里于函數print 相似,輸出結果與print(n) 相同(但有些情在一個函數或循環(huán)中時,就必須得用print函數)。對象的名字必須是以一個字母開頭(AZ 或az),,例如內嵌以包含字母,數字(09),點(.)及下劃線( ). 因為R對對象的名字區(qū)分大小寫,所以x 和X就可以代表兩個完全不同的對象(在Windows操作系統(tǒng)中也是如
22、此)。2.2對象的產生,排列及刪除一個對象可以通過賦值操作來產生,R語言中的賦值(“assign”) 符號一般是由一個尖括號與一個負號組成的箭頭形標志。該符號可以是從左到右的方 向,也可以相反:> n> n 1> 5> n 1<-1515->n5<-<->>>xXx1101> X 1110如果該對象已經存在,那么它以前的值將會自動被新值沖掉(這種修改只 會影響內存中的數據,操作結果暫時 被保存到硬盤中)。在R中給對象賦值有多種形式,可以是直接賦一個數值,也可以是一個算式或一個函數的結果:> n> n 1>
23、 n> n 1<- 10 + 212<- 3 + rnorm(1)2.208807運行rnorm(1) 將產生一個服從平均數為0標準差為1的標準正態(tài)分布的隨量(p. 18)。當然你也可以只是輸入函數或表而不把它的結果賦給某個對象,但如果這樣在窗口中展示的結果將被保存到內存中:5> (10 + 2) * 51 60本文中,在不影響讀者理解的情,一些賦值符號將會被省略。函數ls的功能是顯示所有在內存中的對象:只會列出對象名,如:> name <- "Carmen" n1 <- 10; n2 <- 100; m <- 0.5&
24、gt; ls()1 "m""n1""n2""name"注意在R中應該用分號來隔開同一行中的不同命令語句。如果只要顯示出 在名稱中帶有某個指定字符的對象,則通過設定選項pattern 來實現(xiàn)(可簡寫為pat) ):> ls(pat = "m")1 "m""name"如果進一步限為顯示在名稱中以某個字母開頭的對象,則可:> ls(pat = "m")1 "m"運行函數ls.str()將會展示內存中所有對象的詳
25、細信息:> ls.str()m :num 0.5 n1 :num 10 n2 :num 100 name :chr "Carmen"選項pattern在這里同樣適用。在ls.str函數中另一個非常有用的選項是max.level, 它將規(guī)定顯示所有關對象信息的詳細級別。缺省情況下,ls.str 將會列出關于對象的所有信息,包括數據框,矩陣,數據列表的列數信息。因此展示結果可能會很長。但如果設定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:要在內存中刪除某個對象,可利用函數rm: 運行rm(x)將會刪除對象x,運行rm(x,y) 將會刪除對象x和y,而運行rm(list=ls()則會刪除內存中的所有對象. 在上面所講的ls() 函數中的一些選項同樣也可以運用到rm中來,以選擇的刪除一些對象,如: rm(list=ls(pat="m"
27、;)。62.3R中給予的能提供關于如何使用函數的非常有用的信息。關于某個特定函數的幫助能夠直接被調出來,如運行:> ?lm會立即顯示關于函數lm()(線性模型)的幫助頁面。命令help(lm) 和help("lm")具有同樣的效果。但在形式,如:關于某特殊語法意義字符的幫助時必須用后一種> ?*Error: syntax error> help("*") Arithmeticpackage:baseR DocumentationArithmetic Operators.啟動幫助將會打開一個頁面(取決于操作系統(tǒng)),第一行一般會顯示某函數
28、或操作命令的所屬的包(package),然后是標題,標題下面是則是一些詳細信息。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.對初學者而言,參考幫助中Examples部分的
30、信息是很有用的。而一般 應該仔細閱讀Arguments中的一些說明也是非常有必要的。幫助中還包含了其它一些說明部分,如Note, References或Author(s)等。默認狀態(tài)下,函數help只會在被載入內存中的搜索。選項try.all.package在缺省值是FALSE, 但如果把它設為TRUE,則可在所有進行搜索: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但注意在這種情,顯示關于函數bs的幫助頁面,如果使用者確沒有被載入內存時,可以使用package這個選實想打開這樣的頁面而所屬項:> 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格式的幫助可以通過輸入下面的函數啟動> help.start()在html格式的幫助頁面中還可以使用進行搜索。在See Also部分中,可以通過超文本到其他相關函數的幫助頁面。使用的搜索在R中也可以通過函數help.search來實現(xiàn)。這種方法能在所有已安裝的包中搜索包含給定字符串的相關內容。例如, 運行help.search(&qu
33、ot;tree")會列出所有在幫助頁面含有“tree”的函數。注意如果有一些最近裝的,應該首先使用函數help.search中的rebuild選項來刷新數據庫(e.g.,help.search("tree", rebuild = TRUE)。使用函數apropos則能找出所有在名字中含有指定字符串的函數,但只會在被載入內存中的進行搜索:> apropos(help)1 "help"4 "help.start"".helpForCall" "help.search"83R的數據操作
34、3.1對象我們已經看到R通過一些對象來運行,當然首先這些對象是用它們的名稱來刻畫的,其次也通過對象的數據類型即屬性來刻畫。為了理解這些屬性的用處,我們以一個在1,2,3中取值的變量為例:這個變量可以是一個整數變量(例如巢中蛋的個數),或者也可以是一個分類變量的編碼(例如某些甲殼類動物的三種:雄、雌和雌雄同體)。顯然對這個變量的統(tǒng)計分析在以上兩例中將是不相同的,對象的屬性在R中提供著所需的信息。更技術性也更一般地說,對于作用于一個對象的函 數,其表現(xiàn)將取決于對象的屬性。所有的對象兩個內在屬性:類型和長度。類型是對象元素的基本種類,共有四種:數值型,字符型,復數型7和邏輯型(FALSE或TRUE)
35、,雖然也存在其它的類型,但是并不能用來表示數據,例如函數或表;長度是對象中元素的數目。對象的類型和長度可以分別通過函數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;無論什么類型的數據,數據總是用NA(不可用)來表示;對很大的數 值則可用指數形式表示:> N <- 2.1e23> N1 2.1e+23R可以正確地表示無窮的數值,如用Inf和-Inf表示±,或者用NaN(非數字)表示不是數字的值。7本手冊中不討論復數型9> x <- 5/0> x1 Inf> exp(x)1 Inf> exp(-x)1> x 10- x NaN字符型的值輸入時須加上號",如果需要號的話,可以讓它跟在反斜杠后面;這兩個字符合一起"在某些函數如cat的輸出顯示或write.table寫入磁盤
37、(參見p. 14,函數的qmethod選項)時會被以特殊的方式處理。> 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."下表給出了表示數據的對象的類別概覽:對象類型是否同一個對象中有多種類型?數值型,字符型,復數型,或 邏輯型數值型或 字符型數值型,字符型,復數型,或 邏輯型數值型,字符型,復數型,或 邏輯型數值型,字符型,復數型,或 邏輯型數值型,字符型,復數型,或 邏輯型數值型,字符型,復數型,邏輯型, 函數,表,. . .否否否否是否是因子數組矩陣 數據框時間序列(ts)列表10是一個變量,其意思也即人們通常認為的那樣;因子是一
39、個分類變量;數組是一個k維的數據表;矩陣是數組的一個特例,其維數k = 2。注意,數組或者矩陣中的所有元素都必須是同一種類型的;數據框是由一個或幾個和(或)因子,它們必須是等長的,但可以是不同的數據類型;“ts”表示時間序列數據,它包含一些額外的屬性,例如頻率和時間;列表可以包含任何類型的對象,包括列表!對于一個,用它的類型和長度足夠描述數據;而對其它的對象則另需一些額外信息,這些信息由外在的屬性給出。這些屬性中的是表示對象維 數的dim,比如一個2行2列的的矩陣,它的dim是一對數值2,2,但是其長度 是4。3.2在文件中讀寫數據對于在文件 和寫入的工作,R使用工作目錄來完成??梢允褂妹頶
40、etwd() (獲得工作目錄 )來找到目錄, 使用命令setwd("C:/data") 或者setwd("/home/paradis/R") 來改變目錄。如果一個文件不在工作目錄里則必須給出它的路徑8。R可以用下面的函數在文本文件(ASCII)中的數據:read.table(其中有若干參數,見后文),scan和read.fwf。R也可以以其他格式的文件(Excel, SAS, SPSS, . . . ) 和SQL類型的數據庫,但是基礎并不包含所需的這些函數。這些功能函數對于R的高級應用是十分有用的,但是我 們在這里將文件限定在ASCII格式。函數read
41、.table用來創(chuàng)建一個數據框,所以它是表格形式的數據的主要方法。舉例來說,對于一個名為data.dat的文件,命令:> mydata <- read.table("data.dat")將創(chuàng)建一個數據框名為mydata, 數據框中每個變量也被命名,缺省值為V1, V2, . . . 并且可以單獨地每個變量, 代碼為:mydata$V1,mydata$V2, . . . , 或者用mydata"V1", mydata"V2", . . . , 或者還有法,mydata, 1, mydata,2 , . . . 9 這里有一些
42、選項的缺省值(即如果用戶不設定那么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注 意 這 幾 種 方 法 的 結 果 是 有 區(qū) 別 的 :mydata$V1和mydata, 1是而mydata"V1"是數據框。后面(p. 19)將會講到關于處理對象的詳情。,11strip.white = FALSE,blank.lines.skip=TRUE,comment.char="#")read.table的幾個變種因為使用了不同的缺省值可以用在幾種不同情況下: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, .)函數scan比read.table要更加靈活,它們的區(qū)別之一是前者可以指定變量的類型,例如:12file文件名(包在""內,或使用一個字符型變量),可能需要全路徑(注意即使是在Windows下,符號 也不包含在內,必須用替換),或者一個URL(http:/.)(用URL對文件)header一個邏輯值(FALSE or TRUE),用來反
46、映這個文件的第一行是否包含變量名sep文件中的字段分離符,例如對用制表符分隔的文件使用sep="t"quote指定用于包圍字符型數據的字符dec用來表示小數點的字符s保存著行名的,或文件中一個變量的序號或名字,缺省時行號取為1, 2, 3, . . .s指定列名的字符型(缺省值是:V1, V2, V3, . . . )as.is是否將字符型變量轉化為因子型變量(如果值為FALSE),或者仍 將其保留為字符型(TRUE)。as.is可以是邏輯型,數值型或者字符型 ,用來 變量是否被保留為字符。na.strings代表數據的值(轉化為NA)col
47、Classes指定各列的數據類型的一個字符型nrows可以的最大行數(忽略負值)skip在數據前跳過的行數s如果為TRUE,則檢查變量名是否在R中有效fill如果為TRUE且非所有的行中變量數目相同,則用空白填補strip.white在sep已指定的情,如果為TRUE,則刪除字符型變量前后多余的空格blank.lines.skip如果為TRUE,忽略空白行comment.char一個字符用來在數據文件中寫注釋,以這個字符開頭的行將被忽略(要禁用這個參數,可使用comment.char = "")> mydata <- scan("d
48、ata.dat", what = list("", 0, 0)了文件data.dat中三個變量,第一個是字符型變量,后兩個是數值型變量。另一個重要的區(qū)別在于scan()可以用來創(chuàng)建不同的對象, 陣,數據框,列表. . . 在上面的例子中,mydata是一個有三個,矩的列表。,也就是說,如果what被省略,scan()將創(chuàng)建一個數值型向的數據類型與缺省類型或指定類型不符,則將返回一個錯誤信在缺省情量。如果息。這些選項在下面進行說明。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="")函數read.fwf可以用來文件中
50、一些固定寬度格式的數據:read.fwf(file, widths, sep="t", as.is = FALSE,skip = 0, s, s, n = -1, .)13file文件名(在""之內), 可能包含它的路徑( 符號 不使用, 必須用/替代, 即使是在Windows下面) , 或者使用一個URL(http:/.); 如果file=”, 數據從鍵盤輸入( 使用一個空白行終止輸入)what指定數據的類型(缺省值為數值型)nmax要數據的最大數量,如果what是一個列表,nmax則是可以 的行數(在缺省情,scan到
51、文件最末端為止的所有數據)n要數據的最大數量(在缺省情,沒有限制)sep文件中的字段分隔符quote用來包圍字符型值dec用來表示小數點的字符skip在數據前跳過的行數nlines要的行數na.string表示數據的字符串(轉化為為NA)flush一個邏輯值,如果為TRUE,當完指定列數后scan將轉到下一行(這樣就用戶在數據文件中添加注釋,即添加在指定列數之后)fill如果為TRUE,且非所有的行中變量數目相同,則用空白填補strip.white在sep已指定的情,如果為TRUE,則刪除字符型變量前后多余的空格quiet一個邏輯值,如果為FALSE,scan顯示一行信息說明哪些字段被blan
52、k.lines.skip如果為TRUE,忽略空白行multi.line當what是一個列表時,若為FALSE則表示列表中每個的所有變量都在同一行中comment.char指定注釋開始字符,一行中以這個字符開頭的部分將被忽略(缺是禁 用此選項)除 了widths用 來 說 明字 段 的 寬 度 外 , 選 項與read.table()基本相同。舉例來說, 如果在一個名為data.txt的文件中有一組如右所示的數據,可以這些數據用下面令:>>mydata <- read.fwf("data.txt", widths=c(1, 4,mydata3)V1A A B
53、 B C CV21.501.551.601.651.701.75V123456數據3.3函數write.table可以在文件中寫入一個對象,一般是寫一個數據框,也可以是其它類型的對象(,矩陣. . . )。參數和選項: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是對象的名字( 它可以是, 矩陣, 或者數組)。這里有兩個選項:nc(或者ncol), 用來定義文件中的列數( 在缺, 如果x是字符型數據, 則nc=1; 對于其它數據類型nc=5) ,省情和append(一個邏輯值),若為TRUE則添加數據時不刪除那
55、些可能已存在 在文件中的數據;若為FALSE(缺省值)則刪除文件中已存在的數據。要一組任意數據類型的對象, 我們可以使用命令save(x, y, z,file= "xyz.RData")??梢允褂眠x項ASCIITRUE使得數據在不同的之間更簡易轉移。數據(用R的術語來說叫做工作空間)可以在使用load("xyz. RData")之后被加載到內存中。函數save.image()是save(list =ls(all=TRUE), file=".RData")的一個簡捷方式。3.4生成數據3.4.1規(guī)則序列例如一個從1到30的規(guī)則整數序列,
56、可以這樣產生:> x <- 1:30這個結果x有30個元素。算子:的優(yōu)先級可從如下表中看出:> 1:10-11 0 1 2 3 4 5 6 7 8 9> 1:(10-1)15x要寫入的對象的名稱file文件名(缺省時對象直接被“寫”在屏幕上)append如果為TRUE則在寫入數據時不刪除目標文件中可能已存在的數據,采取往后 添加的方式quote一個邏輯型或者數值型 :如果為TRUE,則字符型變量和因子寫在號""中;若quote是數值型 則代表將欲寫在""中的那些列的列標。(兩種情 變量名都會被寫在""中;若quote = FALSE則變量名不包含在 號中)sep文件中的字段分隔符eol使用在每行最后的字符("n"表示回車)na表示數據的字符dec用來表示小數點的字符s一個邏輯值,決定行名是否寫入文件;或指定要作為行名寫入文件的字符型s一個邏輯值(決定列名是否寫入文件);或指定一個要作為列名寫入文件中 的字符型qmethod若quote=TRUE, 則此參數用來指定字符型變量中的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 班主任時間管理與工作效率培訓計劃
- 家長學校課堂教學計劃
- 小學五年級數學教材分析與教學計劃
- 2025年冀人版四年級科學下冊課外輔導計劃
- 二年級上冊綜合實踐活動師生交流計劃
- 2024-2025學年五年級數學輔助教學計劃
- 大班年級上學期教學能力提升計劃
- 小班學期學生成長計劃
- 幼兒園一日科學探索計劃
- 五年級科學課程復習計劃
- 公司年度內部控制體系自評報告
- 國家開放大學電大24153丨學前衛(wèi)生學基礎(統(tǒng)設課)期末終考題庫
- 鐵路貨運基礎知識課件
- 2024年武漢農村商業(yè)銀行股份有限公司招聘考試真題
- 中國水稻種子市場經營優(yōu)勢與發(fā)展趨勢前景分析研究報告
- 學??照{維修合同書
- 銷售部門報價管理制度
- 集合、復數、不等式與常用邏輯用語(4考點+19題型)-2025年高考數學復習專練(解析版)
- 陪診員培訓課件
- 2024-2025學年深圳市初三英語中考適應性考試英語試題(含答案)
- 2024安陽文峰區(qū)中小學教師招聘考試試題及答案
評論
0/150
提交評論