通常我们读取文件时都会读取全部的文件然后再进行操作,但是当读取的数据量很大是读取的时间会很长,而且占用RAM,对于写测试代码有点不方便。所以只读取前n行数据是一个挺不错的函数。
##file:读取文件路径##n:读取的前n行##header:是否有标题行readfile<-function(file, n=1000, header=T){ pt <- file(file, "r") name <- NULL if(header){ name <- strsplit(readLines(pt, 1), split=',')[[1]]; #读取标题 f1 <- readLines(pt, n) data <- read.table(text=f1, sep=',', col.names=name) }else{ data <- read.table(text=f1, sep=',') } close(pt) data }
测试,最近制作linux启动盘误将移动硬盘当U盘,要死要死的,近500G资料丢失,因为制成启动盘所以资料还找不回来。所以没有大型数据做测试。之前200M的文件本人电脑上读取前10000行也是秒读的。
(data <- readfile(file="mtcars.csv", n=5, header=T)) X.. X.mpg. X.cyl. X.disp. X.hp. X.drat. X.wt.1 Mazda RX4 21.0 6 160 110 3.90 2.620 2 Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 3 Datsun 710 22.8 4 108 93 3.85 2.320 4 Hornet 4 Drive 21.4 6 258 110 3.08 3.215 class(data)[1] "data.frame"
联系客服