read.table
位於 utils
包(package)。 說明
讀取表格格式的文件並從中創建 DataFrame ,其中案例對應於文件中字段的行和變量。
用法
read.table(file, header = FALSE, sep = "", quote = "\"'",
dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
row.names, col.names, as.is = !stringsAsFactors, tryLogical = TRUE,
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 = FALSE,
fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
read.csv(file, header = TRUE, sep = ",", quote = "\"",
dec = ".", fill = TRUE, comment.char = "", ...)
read.csv2(file, header = TRUE, sep = ";", quote = "\"",
dec = ",", fill = TRUE, comment.char = "", ...)
read.delim(file, header = TRUE, sep = "\t", quote = "\"",
dec = ".", fill = TRUE, comment.char = "", ...)
read.delim2(file, header = TRUE, sep = "\t", quote = "\"",
dec = ",", fill = TRUE, comment.char = "", ...)
參數
file |
要從中讀取數據的文件的名稱。表的每一行顯示為文件的一行。如果不包含絕對路徑,則文件名相對於當前工作目錄 或者,
|
header |
一個邏輯值,指示文件的第一行是否包含變量名稱。如果缺失,則根據文件格式確定該值:當且僅當第一行包含的字段比列數少一個時, |
sep |
字段分隔符。文件每一行上的值均以此字符分隔。如果 |
quote |
引用字符集。要完全禁用引用,請使用 |
dec |
文件中用於小數點的字符。 |
numerals |
指示如何轉換數字的字符串,如果轉換為雙精度會失去準確性,請參閱 |
row.names |
行名稱向量。這可以是給出實際行名稱的向量,或者給出包含行名稱的表列的單個數字,或者給出包含行名稱的表列的名稱的字符串。 如果存在標題且第一行包含的字段數少於列數,則輸入中的第一列將用作行名稱。否則,如果 使用 |
col.names |
變量的可選名稱向量。默認情況下使用 |
as.is |
如果 注意:要抑製所有轉換(包括數字列的轉換),請設置 請注意, |
tryLogical |
|
na.strings |
將被解釋為 |
colClasses |
特點。為列假定的類向量。如果未命名,則根據需要進行回收。如果命名,則名稱與未指定的值匹配,被視為 可能的值為 請注意, |
nrows |
整數:要讀入的最大行數。負值和其他無效值將被忽略。 |
skip |
整數:開始讀取數據之前要跳過的數據文件行數。 |
check.names |
合乎邏輯的。如果 |
fill |
合乎邏輯的。如果 |
strip.white |
合乎邏輯的。僅在指定 |
blank.lines.skip |
邏輯:如果輸入中的 |
comment.char |
字符:長度為 1 的字符向量,包含單個字符或空字符串。使用 |
allowEscapes |
合乎邏輯的。 C 風格的轉義是否應該如‘\n’ 被處理或逐字讀取(默認)?請注意,如果不在引號內,它們可能會被解釋為分隔符(但不能解釋為注釋字符)。欲了解更多詳情,請參閱 |
flush |
邏輯:如果 |
stringsAsFactors |
邏輯:字符向量應該轉換為因子嗎?請注意,這被 |
fileEncoding |
字符串:如果非空則聲明文件(而不是連接)上使用的編碼,以便可以重新編碼字符數據。請參閱 |
encoding |
輸入字符串采用的編碼。它用於標記已知為 Latin-1 或 UTF-8 的字符串(請參閱 |
text |
字符串:如果未提供 |
skipNul |
邏輯:應該跳過 nul 嗎? |
... |
要傳遞給 |
細節
該函數是將表格數據讀入的主要方法R.
除非指定 colClasses
,否則所有列都將讀取為字符列,然後使用 type.convert
轉換為邏輯、整數、數字、複數或(取決於 as.is
)適當的因子。 (默認情況下)在所有字段中都會解釋引號,因此像 "42"
這樣的值列將生成整數列。
如果字段或行在注釋字符或字段或行末尾之前不包含任何內容(如果未指定分隔符,則空格除外),則該字段或行為 ‘blank’。
如果未指定 row.names
並且標題行的條目數比列數少一個,則第一列被視為行名稱。這允許從打印數據幀的格式讀取數據幀。如果指定了 row.names
並且不引用第一列,則該列將從此類文件中丟棄。
數據列的數量通過查看輸入的前五行(如果少於五行則查看整個輸入)來確定,或者根據 col.names
的長度(如果已指定且更長)來確定。如果 fill
或 blank.lines.skip
為 true,則這可能是錯誤的,因此如有必要,請指定 col.names
(如“示例”中所示)。
read.csv
和read.csv2
與read.table
除了默認值。它們用於讀取“逗號分隔值”文件(“.csv') 或者 (read.csv2
) 在使用逗號作為小數點和使用分號作為字段分隔符的國家/地區使用的變體。相似地,read.delim
和read.delim2
用於讀取分隔文件,默認使用製表符作為分隔符。請注意header = TRUE
和fill = TRUE
在這些變體中,並且注釋字符被禁用。
注釋字符之後的其餘行將被跳過;評論中的引用不會被處理。允許提供完整的注釋行 blank.lines.skip = TRUE
;但是,標題之前的注釋行必須在第一個非空白列中包含注釋字符。
支持嵌入換行符的引用字段,注釋字符之後除外。不支持嵌入的 nul:跳過它們(使用 skipNul = TRUE
)可能會起作用。
值
包含文件中數據表示的數據幀 (data.frame
)。
當返回 0 行數據幀時,除非指定 col.names
,否則空輸入是錯誤的:類似地,如果 header = TRUE
產生 0 行數據幀,則僅給出標題行。請注意,在任何一種情況下,除非提供了colClasses
,否則列都是邏輯列。
如果 encoding
是 "latin1"
或 "UTF-8"
,結果中的字符串(包括因子級別)將具有聲明的編碼。
CSV 文件
有關 .csv
文件的各種約定,請參閱 write.csv
的幫助。帶有行名稱的 CSV 文件的最常見形式需要使用 read.csv(..., row.names = 1)
讀取,以使用文件第一列中的名稱作為行名稱。
內存使用情況
讀取大文件時,這些函數會使用大量內存。 “R 數據導入/導出”手冊中進行了廣泛的討論,並補充了此處的注釋。
如果將colClasses
指定為六個atomic 向量類之一,則將使用更少的內存。當讀取包含許多不同數值的列時尤其如此,因為將每個不同值存儲為字符串所占用的內存最多是存儲為整數所占用的內存的 14 倍。
使用nrows
,即使是輕微的over-estimate,也將有助於內存使用。
使用 comment.char = ""
將明顯比默認的 read.table
快。
read.table
不是讀取大型矩陣的正確工具,尤其是具有許多列的矩陣:它設計用於讀取可能具有非常不同類別的列的數據幀。使用 scan
代替矩陣。
注意
as.is
和 colClasses
中引用的列包括行名稱列(如果有)。
有兩種方法可以讀取本地編碼之外的輸入。如果已知輸入為 UTF-8 或 Latin1,請使用 encoding
參數進行聲明。如果輸入采用其他編碼,則可以在輸入時對其進行翻譯。 fileEncoding
參數通過設置連接來重新編碼到當前語言環境來實現此目的。請注意,在 Windows 或其他未在 UTF-8 區域設置中運行的係統上,這可能是不可能的。
例子
## using count.fields to handle unknown maximum number of fields
## when fill = TRUE
test1 <- c(1:5, "6,7", "8,9,10")
tf <- tempfile()
writeLines(test1, tf)
read.csv(tf, fill = TRUE) # 1 column
ncol <- max(count.fields(tf, sep = ","))
read.csv(tf, fill = TRUE, header = FALSE,
col.names = paste0("V", seq_len(ncol)))
unlink(tf)
## "Inline" data set, using text=
## Notice that leading and trailing empty lines are auto-trimmed
read.table(header = TRUE, text = "
a b
1 2
3 4
")
參考
Chambers, J. M. (1992) Data for models. Chapter 3 of Statistical Models in S eds J. M. Chambers and T. J. Hastie, Wadsworth & Brooks/Cole.
也可以看看
“R 數據導入/導出”手冊。
scan
、 type.convert
、 read.fwf
用於讀取固定寬度格式的輸入; write.table
; data.frame
。
count.fields
可用於確定讀取文件時出現的問題,這些問題會導致記錄長度不正確的報告(請參閱下麵的“示例”)。
https://www.rfc-editor.org/rfc/rfc4180 for the IANA definition of CSV files (which requires comma as separator and CRLF line endings).
相關用法
- R read.DIF 從電子表格輸入數據
- R read.socket 從套接字讀取或寫入
- R read.fortran 以類似 Fortran 的方式讀取固定格式數據
- R read.fwf 讀取固定寬度格式文件
- R readRegistry 讀取 Windows 注冊表配置單元
- R removeSource 從函數或語言對象中刪除存儲的源
- R remove.packages 刪除已安裝的軟件包
- R relist 允許重新列出未列出()的對象
- R recover 錯誤後瀏覽
- R roman 羅馬數字
- R rtags 類似 Etags 的 R 標記實用程序
- R rcompgen R 的補全生成器
- R select.list 從列表中選擇項目
- R COMPILE 編譯用於 R 的文件
- R browseVignettes 在 HTML 瀏覽器中列出暈影
- R hasName 檢查姓名
- R nsl 按主機名查找 IP 地址
- R edit 調用文本編輯器
- R create.post 準備電子郵件和帖子的輔助函數
- R hsearch-utils 幫助搜索實用程序
- R download.packages 從類似 CRAN 的存儲庫下載軟件包
- R DLL.version MS Windows 上的 DLL 版本信息
- R ls.str 列表對象及其結構
- R Rscript R 前端腳本
- R bug.report 發送錯誤報告
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Data Input。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。