对于超大型CSV文件使用R语言读取前n行进行预览以及R语言readLiunes函数读取行数的疑问

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

对于超大型CSV文件使用R语言读取前n行进行预览

  • 一、下载了几个G的CSV不知道里面的数据格式是不是想要的怎么办?
  • 二、实现
    • 1.直接上代码
    • 2.一些思考和记录
  • 总结

提示:以下是本篇文章正文内容,下面案例可供参考

一、下载了几个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行数据,但是上来就readLinesn,这样去掉第一行的列明,不就相当于读取了n-1行的数据了吗?

f <- readLines(temp, n)

并不是这样的,这里我们需要注意,readLines(text,1),这个函数执行后,行标会自动的移动到下一行,有点像C语言中的一些操作。也就是说当我们读取行名后

names <- strsplit(readLines(temp, 1), split=',')[[1]]

第一行变成了行名后的一行,也就是实际数据的第一行,这时候再

f <- readLines(temp, n)

是完全ok的


总结

记录一下我的问题,希望能对你有所帮助,共同成长!

你可能感兴趣的:(超大CSV预览,r语言,开发语言)