在R語言中使用read.table()函數(shù)讀取矩形表格數(shù)據(jù)是非常方便的。
read.table()函數(shù)的用法如下:
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)

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