在R語言中使用read.table()函數讀取矩形表格數據是非常方便的。
read.table()函數的用法如下:
read.table(file, header = FALSE, sep = "", quote = "/"'",
dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
row.names, col.names, as.is = !stringsAsFactors,
na.strings = "NA", colClasses = NA, nrows = -1,
skip = 0, check.names = TRUE, fill = !blank.lines.skip,
strip.white = FALSE, blank.lines.skip = TRUE,
comment.char = "#",
allowEscapes = FALSE, flush = FALSE,
stringsAsFactors = default.stringsAsFactors(),
fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
各參數的說明如下:
(1)file
要讀取的文件名稱,矩形表格數據的每行是文件中的一行,與scan()函數相同,如果file參數中給定的文件名不是絕對路徑,則文件名是相對于當前R的工作目錄給出的。
(2)header
邏輯值。用于指出文件的第一行是否為數據變量的名字。缺省情況下,由文件的格式來確定此值。如果header設置為TRUE,則要求第一行要比數據列的數量少一列。
(3)sep
數據的分隔符。默認情況下,sep=""。此參數用于指定數據文件中每行中數據之間使用的分隔符。默認情況下,read.table()函數以空白作為數據的分隔符,即默認情況下,read.table()函數可以將1個或多個空格、tab制表符、換行符或回車符作為分隔符。
(4)quote
用于指定包圍字符型數據的字符。如果不使用引用,則可以將該參數設置為quote=""。
默認情況下,字符串可以被 " 或 ' 括起,并且兩種情況下,引號內部的字符都作為字符串的一部分。有效的引用字符(可能沒有)的設置由參數 quote 控制。對于sep = "/n",默認值改為 quote = ""。
如果沒有設定分隔字符,在被引號括起的字符串里面,引號需要用 C格式的轉義字符進行轉義,即在引號前面直接加反斜杠 /。
如果設定了分隔符,在被引號括起的字符串里面,按照電子表格的習慣,把引號重復兩次以達到轉義效果。例如:
'One string isn''t two',"one more"
則可以使用下面的格式讀?。?/p>
read.table("testfile", sep = ",")
即在默認情況下,字符串中的雙寫單引號或雙寫雙引號將被解釋為一個并輸出。
(5)dec
用于指明數據文件中小數的小數點。
(6)numerals
字符串類型。用于指定文件中的數字轉換為雙精度數據時丟失精度的情況下如何進行轉換。這種情況發生于一個數字的位數超出double可以存儲的位數時。有3種選擇:
numerals = "allow.loss" :該值為默認值。允許丟失精度。
numerals = "warn.loss":給出一個丟失精度的警告消息,并與numerals="allow.loss"一樣允許丟失精度。
numerals = "no.loss":當發生丟失精度時,將不會被轉換為數字,根據as.is參數的設置,而轉換為因子(factor)或則缺省情況下轉換為字符串。
(7)row.names
保存行名的向量??梢允褂么藚狄韵蛄康男问浇o出每行的實際行名?;蛘咭x取的表中包含行名稱的列序號或列名字符串。
在數據文件中有行頭且首行的字段名比數據列少一個的情況下,數據文件中第1列將被視為行名稱。除此情況外,在沒有給定row.names參數時,讀取的行名將會自動編號。
可以使用row.names = NULL強制行進行編號。
(8)col.names
指定列名的向量。缺省情況下是又"V"加上列序構成,即V1,V2,V3......
(9)as.is
該參數用于確定read.table()函數讀取字符型數據時是否轉換為因子型變量。當其取值為FALSE時,該函數將把字符型數據轉換為因子型數據,取值為TRUE時,仍將其保留為字符型數據。其取值可以是邏輯值向量(必要時可以循環賦值),數值型向量或字符型向量,以控制哪些列不被轉換為因子。
注意:可以通過設置參數 colClasses = "character"來阻止所有列轉換為因子,包括數值型的列。
(10)na.strings
用于指定缺失數據的值,以轉換為NA。在邏輯型,整型,數字型和復數型的字段中,空白域將被認為是缺失值。
(11)colClasses
用于指定列所屬類的字符串向量。
(12)nrows
整型數。用于指定從文件中讀取的最大行數。負數或其它無效值將會被忽略。
(13)skip
整型數。讀取數據時忽略的行數。
(14)check.names
邏輯值。該參數值設置為TRUE時,數據框中的變量名將會被檢查,以確保符在語法上是有效的變量名稱。
(15)fill
邏輯值。在沒有忽略空白行的情況下(即blank.lines.skip=FLASE),且fill設置為TRUE時,如果數據文件中某行的數據少于其他行,則自動添加空白域。
(16)strip.white
邏輯值,默認為FALSE。此參數只在指定了sep參數時有效。當此參數設置為TRUE時,數據文件中沒有包圍的字符串域的前邊和后邊的空格將會被去掉。
(17)blank.lines.skip
邏輯值,此參數值設置為TRUE時,數據文件中的空白行將被忽略。默認值為TRUE。
(18)comment.char
字符型。包含單個字符或空字符的向量。代表注釋字符的開始字符??梢允褂?quot;"關閉注釋。
(19)allowEscapes
邏輯值。類似“/n”這種C風格的轉義符。如果這種轉義符并不是包含在字符串中,該函數可能解釋為字段分隔符。
(20)flush
邏輯值。默認值為FALSE。當該參數值設置為TRUE時,則該函數讀取完指定列數后將轉到下一行。這允許用戶在最后一個字段后面添加注釋。
(21)stringsAsFactors
邏輯值??刂剖欠駥⒆址蛄哭D換為因子。
(22)fileEncoding
字符串類型,指定文件的編碼方式。如果指定了該參數,則文本數據按照指定的格式重新編碼。
(23)encoding
假定輸入字符串的編碼方式。
(24)text
字符串類型。當未提供file參數時,則函數可以通過一個文本鏈接從text中讀取數據。
(25)skipNul
邏輯值。是否忽略空值。默認為FALSE。
本部分(完)
本部分將根據對read.table()函數的理解,會對此內容進行修正或補充。
新聞熱點
疑難解答