R语言中使用read.table函数读取文件数据方法详解
在R中,可以使用read.table()函数从具有多列表格形式的文件中读取数据。使用好它可以简单的从文本文件或CSV这种文件中读取数据。
read.table()函数语法格式
read.table()函数的语法格式:
read.table(file, header = FALSE, sep = '', quote = '''', dec = '.', row.names, col.names, as.is = !stringsAsFactors, nrows = -1,skip = 0, blank.lines.skip = TRUE, encoding = 'unknown',skipNul = FALSE)
下面使用下图所示的文件结构进行演示操作:
文件中的部分数据及存储格式
file参数
要读取的文件名称,矩形表格数据的每行是文件中的一行,如果file参数中给定的文件名不是绝对路径,则文件名是相对于当前R的工作目录给出的。
read.table('gi.txt')
从文件中读取的结果
从结果可以看出若未给定分隔符sep参数时,read.table函数默认以空白分隔,且文件中的标题行被作为数据处理。同时,read.table函数依次给每列的变量名为v1, v2, ...。结果的第1列为行标题(序号)。
header参数
逻辑值。数据文件中是否有标题行。如果header设置为TRUE,则要求第一行要比数据列的数量少一列。
read.table('gi.txt', header=TRUE)
指定header参数
col.names
指定列名的向量。缺省情况下是又'V'加上列序构成,即V1,V2,V3......
read.table('gi.txt', header=TRUE, col.names=c('year', 'x', 'y'))
指定col.names参数
nrows
整型数。用于指定从文件中读取的最大行数。负数或其它无效值将会被忽略。
指定nrows参数
row.names
保存行名的向量。可以使用此参数以向量的形式给出每行的实际行名。或者要读取的表中包含行名称的列序号或列名字符串。在数据文件中有行头且首行的字段名比数据列少一个的情况下,数据文件中第1列将被视为行名称。除此情况外,在没有给定row.names参数时,读取的行名将会自动编号。可以使用row.names = NULL强制对行进行编号。
使用row.names参数
从图中所示的结果可以看出,默认情况下的序号被替换为指定的Rn形式了,paste0函数是将字符串连接在一起,且连接的字符串结果中间没有分隔符。
skip
整型数。读取数据时忽略的行数。
使用skip参数的情况
从结果可以看出,前10行数据被忽略了。指定skip参数时应该设置col.names参数,否则第一行数据将作为列名处理。
sep参数
数据的分隔符。默认sep=''。默认情况下,read.table()函数以空白作为数据的分隔符。若读取CSV文件,则需要指定sep=','。
blank.lines.skip
逻辑值,此参数值设置为TRUE时,数据文件中的空白行将被忽略。默认值为TRUE。
encoding
假定输入字符串的编码方式。
skipNul
逻辑值。是否忽略空值。默认为FALSE。
-------------------------
欢迎关注本号。本号将持续更新有关R语言方面的文章。内容由浅入深,从R语言的基本语法到具体的分析应用。将个人在实际工作中的知识分享给大家。