当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R read.table 数据输入


R语言 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

要从中读取数据的文件的名称。表的每一行显示为文件的一行。如果不包含绝对路径,则文件名相对于当前工作目录 getwd() 。 Tilde-expansion 在支持的情况下执行。这可以是压缩文件(请参阅file)。

或者,file 可以是可读文本模式connection(如有必要,将打开以供读取,如果是的话,则在函数调用结束时close d(并因此被销毁))。 (如果使用 stdin(),行提示可能会有些混乱。用空行或 EOF 信号终止输入,Unix 上为 Ctrl-D,Windows 上为 Ctrl-Zstdin() 上的任何推送都将在之前清除返回。)

file也可以是完整的URL。 (有关支持的 URL 方案,请参阅 url 帮助的“URL”部分。)

header

一个逻辑值,指示文件的第一行是否包含变量名称。如果缺失,则根据文件格式确定该值:当且仅当第一行包含的字段比列数少一个时,header 才会设置为 TRUE

sep

字段分隔符。文件每一行上的值均以此字符分隔。如果 sep = "" (read.table 的默认值)分隔符为“空白”,即一个或多个空格、制表符、换行符或回车符。

quote

引用字符集。要完全禁用引用,请使用 quote = "" 。有关引号中嵌入的引号的行为,请参阅scan。仅当读取为字符的列时才会考虑引用,除非指定了colClasses,否则所有列都会被引用。

dec

文件中用于小数点的字符。

numerals

指示如何转换数字的字符串,如果转换为双精度会失去准确性,请参阅 type.convert 。可以缩写。 (也适用于复数输入。)

row.names

行名称向量。这可以是给出实际行名称的向量,或者给出包含行名称的表列的单个数字,或者给出包含行名称的表列的名称的字符串。

如果存在标题且第一行包含的字段数少于列数,则输入中的第一列将用作行名称。否则,如果 row.names 缺失,则行将被编号。

使用row.names = NULL 强制行编号。缺少或 NULL row.names 生成被视为 ‘automatic’ 的行名称(并且不由 as.matrix 保留)。

col.names

变量的可选名称向量。默认情况下使用 "V" 后跟列号。

as.is

如果 colClasses 没有另外指定,则控制字符变量(只要它们不转换为逻辑、数字或复数)到因子的转换。它的值可以是逻辑向量(如果需要,可以回收值),也可以是数字或字符索引向量,指定哪些列不应转换为因子。

注意:要抑制所有转换(包括数字列的转换),请设置 colClasses = "character"

请注意,as.is 是按列(而不是每个变量)指定的,因此包括行名称列(如果有)以及要跳过的任何列。

tryLogical

logical 确定完全由 "F""T""FALSE""TRUE" 组成的列是否应转换为 logical ;传递给 type.convert ,默认为 true。

na.strings

将被解释为 NA 值的字符串字符向量。空白字段也被视为逻辑、整数、数字和复杂字段中的缺失值。请注意,测试是在从输入中去除空格之后进行的,因此 na.strings 值可能需要提前去除它们自己的空格。

colClasses

特点。为列假定的类向量。如果未命名,则根据需要进行回收。如果命名,则名称与未指定的值匹配,被视为 NA

可能的值为 NA(默认值,当使用 type.convert 时)、"NULL"(当跳过列时)、原子向量类之一(逻辑、整数、数字、复数、字符、原始)或"factor""Date""POSIXct" 。否则,需要有一个 as 方法(来自包 methods )用于从 "character" 转换为指定的正式类。

请注意,colClasses 是按列(而不是每个变量)指定的,因此包括行名称列(如果有)。

nrows

整数:要读入的最大行数。负值和其他无效值将被忽略。

skip

整数:开始读取数据之前要跳过的数据文件行数。

check.names

合乎逻辑的。如果TRUE,则检查 DataFrame 中变量的名称以确保它们是语法上有效的变量名称。如有必要,它们会被调整(通过 make.names ),并确保没有重复。

fill

合乎逻辑的。如果TRUE,那么如果行长度不等,则会隐式添加空白字段。查看具体信息'。

strip.white

合乎逻辑的。仅在指定 sep 时使用,并允许从未加引号的 character 字段中去除前导和尾随空白(始终去除 numeric 字段)。请参阅 scan 了解更多详细信息(包括“空白”的确切含义),请记住列可能包含行名称。

blank.lines.skip

逻辑:如果输入中的 TRUE 空行被忽略。

comment.char

字符:长度为 1 的字符向量,包含单个字符或空字符串。使用"" 完全关闭注释的解释。

allowEscapes

合乎逻辑的。 C 风格的转义是否应该如‘⁠\n⁠’ 被处理或逐字读取(默认)?请注意,如果不在引号内,它们可能会被解释为分隔符(但不能解释为注释字符)。欲了解更多详情,请参阅scan.

flush

逻辑:如果 TRUEscan 将在读取请求的最后一个字段后刷新到行尾。这允许在最后一个字段之后添加注释。

stringsAsFactors

逻辑:字符向量应该转换为因子吗?请注意,这被 as.iscolClasses 覆盖,两者都允许更精细的控制。

fileEncoding

字符串:如果非空则声明文件(而不是连接)上使用的编码,以便可以重新编码字符数据。请参阅 file 帮助的“编码”部分、“R 数据导入/导出”手册和“注释”。

encoding

输入字符串采用的编码。它用于标记已知为 Latin-1 或 UTF-8 的字符串(请参阅Encoding):它不用于重新编码输入,但允许R以本机编码处理编码字符串(如果这两者之一)。请参阅“值”和“注释”。

text

字符串:如果未提供 file,则通过文本连接从 text 的值读取数据。请注意,文字字符串可用于在 R 代码中包含(小)数据集。

skipNul

逻辑:应该跳过 nul 吗?

...

要传递给 read.table 的更多参数。

细节

该函数是将表格数据读入的主要方法R.

除非指定 colClasses,否则所有列都将读取为字符列,然后使用 type.convert 转换为逻辑、整数、数字、复数或(取决于 as.is )适当的因子。 (默认情况下)在所有字段中都会解释引号,因此像 "42" 这样的值列将生成整数列。

如果字段或行在注释字符或字段或行末尾之前不包含任何内容(如果未指定分隔符,则空格除外),则该字段或行为 ‘blank’。

如果未指定 row.names 并且标题行的条目数比列数少一个,则第一列被视为行名称。这允许从打印数据帧的格式读取数据帧。如果指定了 row.names 并且不引用第一列,则该列将从此类文件中丢弃。

数据列的数量通过查看输入的前五行(如果少于五行则查看整个输入)来确定,或者根据 col.names 的长度(如果已指定且更长)来确定。如果 fillblank.lines.skip 为 true,则这可能是错误的,因此如有必要,请指定 col.names(如“示例”中所示)。

read.csvread.csv2read.table除了默认值。它们用于读取“逗号分隔值”文件(“.csv') 或者 (read.csv2) 在使用逗号作为小数点和使用分号作为字段分隔符的国家/地区使用的变体。相似地,read.delimread.delim2用于读取分隔文件,默认使用制表符作为分隔符。请注意header = TRUEfill = 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.iscolClasses 中引用的列包括行名称列(如果有)。

有两种方法可以读取本地编码之外的输入。如果已知输入为 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 数据导入/导出”手册。

scantype.convertread.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-devel大神的英文原创作品 Data Input。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。