scan
位于 base
包(package)。 说明
从控制台或文件将数据读入向量或列表。
用法
scan(file = "", what = double(), nmax = -1, n = -1, sep = "",
quote = if(identical(sep, "\n")) "" else "'\"", dec = ".",
skip = 0, nlines = 0, na.strings = "NA",
flush = FALSE, fill = FALSE, strip.white = FALSE,
quiet = FALSE, blank.lines.skip = TRUE, multi.line = TRUE,
comment.char = "", allowEscapes = FALSE,
fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
参数
file |
要从中读取数据值的文件的名称。如果指定的文件是 否则,将解释文件名相对的到当前工作目录(由 这可以是压缩文件(请参阅 或者,
要读取不是当前编码的数据文件(例如 UTF-8 语言环境中的 Latin-1 文件或相反),请使用 |
what |
|
nmax |
要读取的数据值的最大数量,或者如果 |
n |
integer:读取数据值的最大数量,默认无限制。无效值将被忽略。 |
sep |
默认情况下,扫描期望读取“空白”分隔的输入字段。或者, 如果指定,则应为空字符串(默认值)或 |
quote |
作为单个字符串或 |
dec |
小数点字符。这应该是一个仅包含一个单字节字符的字符串。 ( |
skip |
开始读取数据值之前要跳过的输入文件的行数。 |
nlines |
如果为正,则表示要读取的最大数据行数。 |
na.strings |
字符向量。该向量的元素将被解释为缺失 ( |
flush |
逻辑:如果 |
fill |
逻辑:如果 |
strip.white |
与 如果 |
quiet |
逻辑:如果 |
blank.lines.skip |
逻辑:如果输入中的 |
multi.line |
合乎逻辑的。仅当 |
comment.char |
字符:长度为 1 的字符向量,包含单个字符或空字符串。使用 |
allowEscapes |
合乎逻辑的。 C 风格的转义是否应该如‘\n’ 被处理(默认)还是逐字读取?请注意,如果不在引号内,它们可能会被解释为分隔符(但不能解释为注释字符)。 被解释的转义符是控制字符‘\a、\b、\f、\n、\r、\t、\v’以及八进制和十六进制表示形式,例如‘\040' 和 '\0x2A’。任何其他转义字符都被视为其本身,包括反斜杠。请注意 Unicode 转义(以‘\u' 或者 '\U': 看base Quotes)从未被处理。 |
fileEncoding |
字符串:如果非空,则声明文件(不是连接或键盘)上使用的编码,因此可以重新编码字符数据。请参阅 |
encoding |
输入字符串采用的编码。如果值为 |
text |
字符串:如果未提供 |
skipNul |
逻辑:读取字符字段时是否应该跳过 NULL? |
细节
what
的值可以是类型列表,在这种情况下,scan
返回向量列表,其类型由 what
中元素的类型指定。这提供了一种读取柱状数据的方法。如果任何类型为 NULL
,则跳过相应字段(但结果中会出现 NULL
组件)。
what
或其组件的类型可以是六种原子向量类型之一或 NULL
(请参阅 is.atomic
)。
出于此函数的目的,“空白”被定义为来自设定空间、水平制表符、回车符和换行符的一个或多个连续字符(又名“newline”,"\n"
)。它不包括换页符或垂直制表符,但在 Latin-1 和 Windows 8 位语言环境中(但不包括 UTF-8)'space' 包括不间断空格‘"\xa0"’。
空数字字段始终被视为缺失值。空字符字段将被扫描为空字符向量,除非 na.strings
包含 ""
(当它们被视为缺失值时)。
数字字段允许的输入是可选空格后跟 NA
或可选符号后跟十进制或十六进制常数(请参阅 NumericConstants ),或 NaN
、 Inf
或 infinity
(忽略大小写)。超出范围的值记录为 Inf
、 -Inf
或 0
。
对于整数字段,允许的输入是可选的空格,后跟NA
或一个可选的符号和一个或多个数字(‘0-9’):所有超出范围的值都会转换为NA_integer_
.
如果sep
是默认值(""
), 人物 '\带引号的字符串中的 ' 会转义后面的字符,因此可以通过转义引号将引号包含在字符串中。
如果sep
非默认,字段可以用‘的样式引用.csv' 分隔符位于引号内的文件 (''
或者""
) 被忽略,并且可以通过将引号加倍来将引号放入字符串内。然而,如果sep = "\n"
默认情况下,假设人们想要逐字阅读整行。
仅在字符字段和 NULL
字段(可能会跳过字符字段)中解释引用。
请注意,由于 sep
是分隔符而不是终止符,因此如果文件以换行符 ( "\n"
) 结尾,则通过 scan("foo", sep = "\n", blank.lines.skip = FALSE)
读取文件将给出一个空的最后一行,否则则不会。这可能不是你所期望的;另请参见readLines
。
如果出现comment.char
(除了在带引号的字符字段内),则表明该行的其余部分应被视为注释并被丢弃。以注释字符开头的行(可能在带有默认分隔符的空格之后)被视为空行。
从控制台读取时,line-length 限制为 4095 字节(这可能会施加下限:请参阅“R 简介”)。
如果 what
是列表,则每 1000 行检查一次用户中断,否则每 10000 个项目检查一次。
如果 file
是字符串并且 fileEncoding
不是默认值,或者如果它是带有非默认 encoding
参数的 not-already-open connection,则文本将转换为 UTF-8 并如此声明(scan
的 encoding
参数被忽略)。请参阅 readLines
的示例。
输入流中嵌入的 nul 将终止当前正在读取的字段,每次调用 scan
时都会发出警告。设置 skipNul = TRUE
会导致它们被忽略。
值
如果 what
是一个列表,则与 what
具有相同长度和相同名称(任意)的列表。
否则,为 what
类型的向量。
如果 encoding
是 "latin1"
或 "UTF-8"
,结果中的字符串将具有声明的编码。
注意
multi.line
的默认值与 S 不同。要每行读取一条记录,请使用 flush = TRUE
和 multi.line = FALSE
。 (请注意,带引号的字符串仍然可以包含嵌入的换行符。)
如果未指定项目数量,内部机制会以 2 的幂次重新分配内存,因此最多可以使用所需内存的三倍。 (它需要旧副本和新副本。)如果可以,请在输入大型向量时指定 n
或 nmax
,并在输入大型列表时指定 nmax
或 nlines
。
在打开的连接上使用 scan
读取部分行可能会丢失字符:使用显式分隔符来避免这种情况。
拥有nul
字段中的字节(包括‘\0' 如果allowEscapes = TRUE
)可能会导致该字段的解释终止于nul
。它们通常不会出现在文本文件中 - 请参阅readBin
.
例子
cat("TITLE extra line", "2 3 5 7", "11 13 17", file = "ex.data", sep = "\n")
pp <- scan("ex.data", skip = 1, quiet = TRUE)
scan("ex.data", skip = 1)
scan("ex.data", skip = 1, nlines = 1) # only 1 line after the skipped one
scan("ex.data", what = list("","","")) # flush is F -> read "7"
scan("ex.data", what = list("","",""), flush = TRUE)
unlink("ex.data") # tidy up
## "inline" usage
scan(text = "1 2 3")
参考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
read.table
更方便用户读取数据矩阵; readLines
一次读取一行文件。 write
。
Quotes
了解 C 风格转义序列的详细信息。
相关用法
- R scale 类矩阵对象的缩放和居中
- R strsplit 分割字符向量的元素
- R seq.Date 生成规则的日期序列
- R search 给出 R 对象的搜索路径
- R solve 求解方程组
- R sprintf 使用 C 风格字符串格式化命令
- R stop 停止函数执行
- R sign 标志函数
- R svd 矩阵的奇异值分解
- R strtoi 将字符串转换为整数
- R source 从文件、连接或表达式中读取 R 代码
- R sQuote 引用文字
- R switch 选择替代方案列表之一
- R substitute 替换和引用表达式
- R strrep 重复字符向量的元素
- R split 分组并重新集合
- R slice.index 数组中的切片索引
- R sort 对向量进行排序或排序
- R standardGeneric 形式化方法系统 – 调度 S4 方法
- R sequence 创建序列向量
- R startsWith 字符串是否以另一个字符串开头或结尾?
- R system.file 查找 R 系统文件的名称
- R sample 随机样本和排列
- R strwrap 将字符串换行以设置段落格式
- R seek 重新定位连接的函数
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Read Data Values。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。