我是R语言编程的新手,因此欢迎您提供任何帮助,并深表感谢。
我有一个输出文件,该文件有很多结果,我想从下一行开始阅读 “ Ann。Exc。Prob。EMA Est。V [log(EMA)]现场估算CI-Low CI-High” 并在没有文本的行时停止。可以读取其他类型的文件,这就是为什么有一个列表的原因。文本文件可以在图像Text file image中看到。再次感谢您的所有帮助。
我尝试使用此代码
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)
答案 0 :(得分:0)
我认为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
的虚拟值。