提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
对于超大型CSV文件使用R语言读取前n行进行预览
提示:以下是本篇文章正文内容,下面案例可供参考
一、下载了几个G的CSV不知道里面的数据格式是不是想要的怎么办?
相信很多朋友也遇到类似的问题,想预览一下文件的内容,但是excel加载不出来,quicklook也打不开,用R直接read内存直接占满,也打不开(昨天尝试预览一个3G的CSV,16G内存直接占满,也没成功)
二、实现
1.直接上代码
代码如下(示例):
readfile<-function(filePath, n, header=T){
temp <- file(filePath, "r")#file是读取文件的操作,不需要多说
name <- NULL
if(header){
names <- strsplit(readLines(temp, 1), split=',')[[1]]; #读取标题
f <- readLines(temp, n)
data <- read.table(text=f, sep=',', col.names=names)#将读取的标题设置为每一列的列名
}else{
data <- read.table(text=f, sep=',')
}
close(pt)
data
}
2.一些思考和记录
相信仔细的朋友已经发现一个小问题了,我们目的是读取n行数据,但是上来就readLines了n,这样去掉第一行的列明,不就相当于读取了n-1行的数据了吗?
f <- readLines(temp, n)
并不是这样的,这里我们需要注意,readLines(text,1),这个函数执行后,行标会自动的移动到下一行,有点像C语言中的一些操作。也就是说当我们读取行名后
names <- strsplit(readLines(temp, 1), split=',')[[1]]
第一行变成了行名后的一行,也就是实际数据的第一行,这时候再
f <- readLines(temp, n)
是完全ok的
总结
记录一下我的问题,希望能对你有所帮助,共同成长!