在R语言中可以使用scan()函数从键盘或文件中读取数据到向量或列表中。
scan()函数的语法形式
scan()函数的语法格式如下:
scan(file = "", what = double(0), 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
file参数用于指定要读取文件的路径和名字,如果为空或"",则是要从键盘中获取数据。
如果指定的文件的名字使用的是相对路径,则默认是从当前工作目录中寻找文件(当前工作目录可以使用getwd()函数获取到);
如果指定了绝对路径,则scan()函数要按照绝对路径读取文件。
- what
what用于给出要读取的数据的类型,支持的数据类型包括:logical, integer, numeric, complex, character, raw以及list.
- nmax
是一个整型值,用于指定要读取数据的最大数量,如果what被指定为列表(list),则nmax表示要读取的最大记录数或行数,如果忽略nmax参数,或该参数被指定为非负整数,或者该参数被设定为无效值时(同时,nlines参数没有被设定为负数时),scan函数将会读取到该文件的末尾。
- n
是一个整型值,要读取的数据的最大数量,默认情况下没有限制。若指定无效的值,将会被忽略。
- sep
sep参数是用于指出文件中数据的分隔符,scan默认数据是以空白进行分隔,另外,也可以指定其它单个字符作为数据域的分隔符
- quote
用于指定包围字符串的字符,该参数应该是一个单字符。
- dec
用于表示小数数点的字符,该参数只能是包含单个字符的字符串或零长度的字符串。默认为“.”。
- skip
用于指定读取数据时,忽略文件前面的行数。
- nlines
指定要读取文件中数据的最大行数。
- na.strings
字符向量。用于指定表示缺失数据时的字符串,默认为NA。在逻辑型、整数型、数值型和复数型数据域中,空白域也被看作缺失值。
- flush
是一个逻辑值,默认为FALSE。如果该参数设置为TRUE,则scan()函数读取完指定列数后将转到下一行。这允许用户在最后一个字段后面添加注释。
- fill
逻辑值。如果参数值设置为TRUE时,当行中的字段值少于字段数时,将以空白填充。
- strip.white
在sep参数已指定的情况下,如果为TRUE,则删除字符型字段前后多余的空格。但包含在引用中的空白不会被删除,同时数值型字段值前后的空白在任何情况下都会被去掉。
- quiet
是一个逻辑值,当设置为FALSE时,scan()函数将输出一行信息,用于说明读取了哪些项的信息。
- blank.lines.skip
是一个逻辑值 ,如果设置为TRUE,将忽略空白行
- multi.line
是一个逻辑值。只用于what参数是一个列表型参数时。当设置为FALSE时,每个记录的字段都在一行中。
- comment.char
指定注释开始的字符。一行中以这个字符开头的部分将被忽略。默认关闭此项。
- allowEscapes
该参数是一个逻辑值,默认值为FALSE。表示在一个引用起来的字符串中,类似“\n”这样的字符被解释为转义字符还是按原样输出(字面意义或逐字字符串)。若不在引号中,这样的字符将视为字段分隔符。
- fileEncoding
字符串类型,指定文件的编码方式。如果指定了该参数,则文本数据按照指定的格式重新编码。
- encoding
对输入的非ASCII字符按照指定的编码格式编码。
- text
字符串类型。if file is not supplied and this is, then data are read from the value of text via a text connection.
- skipNul
逻辑值。是否忽略空值。
欢迎关注本号,本号将持续更新R语言方面的文章,内容由浅入深,由R语言的基本语法到具体的数据分析应用。如有问题请留言。