在满足条件后开始读取文本文件



我是R编程的新手,所以我们欢迎并非常感谢您的帮助。

我有一个输出文件,里面有很多结果,我想从下面的行开始阅读"Ann.Exc.Prob.EMA Est.V[log(EMA(]现场Est.CI低CI高"并且一旦出现没有文本的行就停止。还有其他类型的文件可以读取,这就是为什么有一个列表。文本文件可以在imageText文件图像中看到。再次感谢您的帮助。

我已经尝试使用这个代码

LoadFFA <- function(filename, folder.out, TYPE = "PeakFQ_17C",
colStandard = TRUE){ # standardize column output names

fileinput<-file.path(folder.out,filename)
fileinput<c(fileinput)
require(data.table)
if(grepl("PEAKFQSA",TYPE)){ # PeakfqSA Bulleting 17C analysis
text.list<-lapply(fileinput,readLines)
skip.rows<-sapply(text.list, grep, pattern = '^Ann. Exc. Prob.\s+EMA Est.')-1
PFA<-lapply(seq_along(text.list),function(i) fread(fileinput[i],skip=skip.rows[i]))
} 
}

编辑

require(data.table)
if(grepl("PEAKFQSA",TYPE)){ # PeakfqSA Bulleting 17C analysis
text.list<-lapply(fileinput,readLines)
skip.rows<-sapply(text.list, grep, pattern = '^Ann. Exc. Prob.\s+EMA Est.')-1
PFA<-lapply(seq_along(text.list),function(i) read.delim(fileinput[i],skip=skip.rows[i]))
} 
}
print(PFA)

我不认为R可以根据条件开始读取文件。但是,您可以读取整个文件,然后删除不符合条件的行。

为此,您可以使用scan()。此函数逐行读取文件。一旦您阅读了整个文件,就可以很容易地找到与描述匹配的行。假设您的文件名为text.txt:

file = scan("text.txt") #read entire file
start = which(file ==  " Ann. Exc. Prob. EMA Est. V[log(EMA)] At-Site Est. CI-Low CI-High")
end = which(file == "")
file.clean = file[start:end]

此代码假定只有一行完全为空。如果没有,则end将包含多个数字,并且您必须添加一个规则来选择大于start的最小值。

最新更新