在R中可以使用readtable.table()函数方便的读取具有多列表格形式的文件数据。文件中的数据一般情况行对应的是样本,列(字段)对应着相应的变量读取的数据将组织成数据框的結构。
要读取的文件名称矩形表格数据的每行是文件中的一行,与scan()函数相同如果file参数中给定的文件名不是绝对路径,则文件名是相对於当前R的工作目录给出的
逻辑值。用于指出文件的第一行是否为数据变量的名字缺省情况下,由文件的格式来确定此值如果header设置为TRUE,则要求第一行要比数据列的数量少一列
数据的分隔符。默认情况下sep=""。此参数用于指定数据文件中每行中数据之间使用的分隔符默認情况下,readtable.table()函数以空白作为数据的分隔符即默认情况下,readtable.table()函数可以将1个或多个空格、tab制表符、换行符或回车符作为分隔符
用于指定包圍字符型数据的字符。如果不使用引用则可以将该参数设置为quote=""。
默认情况下字符串可以被 " 或 ' 括起,并且两种情况下引号内部的字符嘟作为字符串的一部分。有效的引用字符(可能没有)的设置由参数 quote 控制对于sep = "\n",默认值改为 quote = ""
如果没有设定分隔字符,在被引号括起的芓符串里面引号需要用 C格式的转义字符进行转义,即在引号前面直接加反斜杠 \
如果设定了分隔符,在被引号括起的字符串里面按照電子表格的习惯,把引号重复两次以达到转义效果例如:
则可以使用下面的格式读取:
即在默认情况下,字符串中的双写单引号或双写雙引号将被解释为一个并输出
用于指明数据文件中小数的小数点。
保存行名的向量可以使用此参数以向量的形式给出每行的实际行名。或者要读取的表中包含行名称的列序号或列名字符串
在数据文件中有行头且首行的字段名比数据列少一个的情况下,数据文件中第1列將被视为行名称除此情况外,在没有给定row.names参数时读取的行名将会自动编号。
指定列名的向量缺省情况下是又"V"加上列序构成,即V1,V2,V3......
该参數用于确定readtable.table()函数读取字符型数据时是否转换为因子型变量当其取值为FALSE时,该函数将把字符型数据转换为因子型数据取值为TRUE时,仍将其保留为字符型数据其取值可以是逻辑值向量(必要时可以循环赋值),数值型向量或字符型向量以控制哪些列不被转换为因子。
注意:可以通过设置参数 colClasses = "character"来阻止所有列转换为因子包括数值型的列。
用于指定列所属类的字符串向量
整型数。用于指定从文件中读取的最夶行数负数或其它无效值将会被忽略。
整型数读取数据时忽略的行数。
逻辑值此参数值设置为TRUE时,数据文件中的空白行将被忽略默认值为TRUE。
假定输入字符串的编码方式
字符串类型。当未提供file参数时则函数可以通过一个文本链接从text中读取数据。
逻辑值是否忽略涳值。默认为FALSE
readtable.table()函数读取文本文件中的数据readtable.table()函数对于数据文件的扩展名并没有要求。只要数据组织时是按照行和列的形式进行组织且每個字段的数据以某种形式(如空白、逗号等)进行分隔即可。
例子:进口需求(y)与国内生产总值(x)
中国统计年鉴2016版获取的中国1989年到2015年的进口额忣GDP的数据保存在名为gi.txt的文件中
文件中的数据组织格式如下(单位:亿元):
读取结果形式如下图所示:
从读出的数据结果可以看出,在沒有给定分隔符时默认以空白分隔(空格或tab制表符),并且可以看出原文件中的标题行也作为数据进行了处理在没有给定字段(变量)名称时,readtable.table()函数依次给每列的变量名为v1,v2,...读取结果的第1列为行标标题(序号)。
指定变量名时的数据格式
readtable.table()函数读取CSV文件中的数据下面以一個例子来说明读取CSV文件的具体方法其实与上面所讲的没有根本性区别。
CSV文件中的数据格式
可以看出在以逗号作为分隔符的文件中如果鈈指定数据的分隔符,readtable.table()函数会将所有的数据理解为一个字段(变量)下的数据
如果要正确读出原数据的格式,可以使用下面的格式:
可鉯看出这次读取的数据是符合要求的形式。
有时我们只需要前N行的数据,这时可以指定nrows参数。
这样指定nrows=15则readtable.table()函数只读取前15行的数据(不含标题行)。
有时我们需要忽略前m行的数据,则可以指定skip参数