删除r中各种长度的标题

时间:2014-06-13 18:53:57

标签: r

我正在使用read.fwf函数组合多个.txt文件。我的问题是每个文本文件前面有几个标题行,在数据实际开始之前从23-28行变化。我想以某种方式删除文件中的前n行,以便我导入和梳理的所有内容都是数据本身。

有没有人有关于如何做到这一点的线索?每个数据文件的开头都是相同的(" 01Jan"),后跟一年。我基本上想删除文件中01Jan之前的所有内容。

现在,我的代码如下:

for (i in 1:length(files.x)){
  if (!exists("X")){
  X<-read.fwf(files.x[i], c(11,5, 16), header=FALSE, skip=23, stringsAsFactors=FALSE)
  X<-head(X, -1) #delete the last row of each table
  names(X)<-c("Date", "Time", "Data")
} else if (exists("X")){
  temp_X<-read.fwf(files.x[i], c(11,5,16), header=FALSE, skip=23,   stringsAsFactors=FALSE) #read in fixed width file
 temp_X<-head(temp_X, -1)
 names(temp_X)<-c("Date", "Time", "Data")
 X<-rbind(X, temp_X) 

} }

我需要skip = 23根据正在读入的文件而有所不同。除了手动读取每个文件然后组合之外的任何想法?

1 个答案:

答案 0 :(得分:1)

也许

 hdr <- readLines(files.x[i],n=50) ## or some reasonable upper bound
 firstLine <- grep("^01Jan",hdr)[1]
 X <- read.fwf(files.x[i], skip=firstLine-1, ...)

此外,通过fileList <- lapply(files.x,getFile)读取所有文件会更高效(其中getFile是您编写的一个小实用程序函数,用于封装单个文件中的读取逻辑)然后{ {1}}