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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。