我需要一些指导如何正确读取文件中的数据 - 没有放在第一行(标题之后)的空白行。
脚本如下:
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
选项感兴趣,因为我在整个商业周期中使用它。
答案 0 :(得分:1)
参数blank.lines.skip=TRUE
是您的答案。
答案 1 :(得分:0)
fread
也有一个skip
参数,您可以使用它,但它与read.csv.raw
略有不同。因此,您可以先阅读标题,然后使用skip