如何在r中用fread()删除空行

时间:2016-03-10 15:24:05

标签: r csv data.table

我需要一些指导如何正确读取文件中的数据 - 没有放在第一行(标题之后)的空白行。

脚本如下:

library(iotools)
library(data.table)    

#set a row qty for the dataframe
df_size<-100
#make a dataframe
n<-   data.frame(x=1:df_size,y=rnorm(1:df_size),z=rnorm(1:df_size),w=c("fgdfgd"))
n[,4]<-as.character(n[,4])
str(n)
#filename variable
file_output<-"test.csv"

#write to csv file
**fwrite_score(n,file_output)**


#read from the file saved
# option1
output<-fread(file_output, sep=";",dec=".",data.table = FALSE
              ,stringsAsFactors = FALSE)
str(output)
#option 2
output<-(fread(file_output, sep=";",,dec=".",data.table = FALSE
                ,stringsAsFactors = FALSE,header=TRUE,))[-1,]
str(output)

#**function to write a file fast** (function is written base upon 'write.csv.raw' from 'iotools' package):
fwrite_score<-function(  df=NA
                         ,file_name=NA
                       ){

#to remove previous file
  if (file.exists(file_name)) file.remove(file_name)
  #create new file
  file(file_name, ifelse(FALSE, "ab", "wb"))
  #create connection to the new file
  zz <- file(file_name, "wb")
  #convert dataframe into binary vector
  rnames<-as.output(rbind(colnames(df),""),sep=";",nsep="\t")
  #prepare binary vector to write
  r = as.output(df, sep = ";",nsep="\t")
  #add column names to the file
  writeBin(rnames, zz)
  #add dataframe body to the file
  writeBin(r, zz)
  #close file conection
  close(zz)
  rm(zz)
  gc()
}

选项1是常见的&#39; fread&#39; - 空行仍然存在。

option2使用外部参数排除空行&#39; [ - 1,]&#39;。

所以问题是否有fread的内部参数来排除空行

该问题的替代解决方案是:

output<-read.csv.raw(file_output,header=TRUE,sep=";",skip=1)
str(output)

但我对fread选项感兴趣,因为我在整个商业周期中使用它。

2 个答案:

答案 0 :(得分:1)

参数blank.lines.skip=TRUE是您的答案。

答案 1 :(得分:0)

fread也有一个skip参数,您可以使用它,但它与read.csv.raw略有不同。因此,您可以先阅读标题,然后使用skip

阅读内容