read.table()读取数据文件

从带分隔符的文本文件导入数据read.table()web

read.table(file, header = FALSE, sep = “”,stringsAsFactors ,colClasses = NA)安全

File是带分隔符的ASCII文本文件,sep用来指定分割数据的分隔符,stringsAsFactors能够设置字符变量与因子之间的转换。colClasses为每一列指定一个类,也能够设置字符型变量和因子之间的转换。svg

一些须要考虑的问题:
(1)编码问题
若是文件中包含非-ASCII字符字段,要确保以正确的编码方式读取。这是在UTF-8的本地系统里面读取Latin-1文件的一个主要问题。
read.table(file(“file.dat”, encoding=”latin1”))函数

(2)首行问题
设定header参数,首行有对应列的字段,若是须要在R中看到这一行,设置header=TRUE。若是要读取的文件里面有行标签的头字段(可能为空),变量名比数据列少一个,则用
read.table(“file.dat”, header = TRUE, row.names = 1)编码

(3)分隔符问题
R中把任意多个连续的空格或制表符只算做一个。
对于空白分割的文件,可选择默认的sep=””,其余的空白分隔符有:空格,制表符,换行符
sep=” ”;sep = “\t”;sep = “\n”code

(4) 字符字段中的空白
若是设定了分隔符,字符字段起始和收尾处的空白会做为字段的一部分看待。去掉这些空白,能够使用参数strip.white = TRUE.xml

(5)空白行
默认状况下,read.table()忽略空白行。设置blank.lines.skip = FALSE不忽略空白行,这个参数只有和fill=TRUE共同使用才有效,这时多是用空白行代表规则数据中的缺损样本。
Fill若是为TRUE且非全部的行中变量数目相同,则会用空白填补。ip

(6)变量的类型
read.table 默认会为为数据框的每一个变量选择一个合适的类型。若是字段没有缺损以及不能直接转换,它会按 logical, integer, numeric 和complex 的顺序依次判断字段类型。若是全部这些类型都失败了,变量会转变成因子。
参数 colClasses 和 as.is 提供了很大的控制权。 as.is 会 抑制字符向量转换成因子(仅仅这个功能)。 colClasses运行为输入中的每一个列设置须要的类型。utf-8

(7)注释
默认状况下,read.table 用 # 在数据文件中写注释,若是碰到该字符,该行中其后的内容会被忽略。若是数据文件中没有注释内容或禁用这个参数,用Comment.char = “”比较安全。string

经常使用函数read.csv(),read.delim是read.table函数的包装,分隔符分别为逗号、制表符,一样接受read.table全部参数。

若是数据集中含有中文,直接导入颇有可能不识别中文,这时加上参数fileEncoding=’utf-8’
read.csv(‘data.csv’,fileEncoding=’utf-8’)

读取大的数据时,效率很重要,设定comment.char = “”,以原子向量类型(逻辑型,整型,数值型,复数型,字符型)设定每列的colClasses,给定须要读入的行数nrows(适当的高估一点比不设置这个参数好)等措施会提升效率。

首先reaadLines函数能够得到数据的行数(注意L为大写),先判断数据量。
Lines <- readLines(“item.csv”)

不包含注释符,设定读取的最大行数(不包括header行),从文件开头跳过的行数(不包括header行),指定每一列的数据类型(“NULL”指示跳过该列,NA表示软件自动识别每列的类型)

{r}
data5<-read.csv('item.csv',comment.char='',nrows=10,skip=2,
colClasses=list('integer','NULL','factor'))#跳过前两行和header

读取定宽文本文件(fixed-width file)
read.fwf函数,header=参数,as.is=参数,sep=参数等,同read.table。widths=参数是一个向量,向量值是要读入的字段宽度,负数表示跳过某列不读。

mydata <- read.fwf(file=”mydata.txt”, width=c(1,-1,2), 跳过数据文件中的第二列