我有一个像这样的file.txt,我想在R中读取,直到找到一些匹配:
header1
header2
more descriptions
again
stop here
dataline1
dataline2
dataline3
在这种情况下,匹配将是"停在这里"。
我想通过以下方式执行此操作:
x<-file("file.txt","r")
match<-paste("stop","here")
line<-readLines(x,1)
while(line!=match){
line<-readLines(x,1)
}
line
[1] "stop here"
问题是停止线可以有更多的弦,也就是说,除了&#34;停在这里&#34;可以像&#34;停在这里&#34;,哪里可以改变文件。 当尝试使用上面的代码读取这个新文件时,它会抛出一个错误:
Error in while (line != match) { : argument is of length zero
并且行为空。
line
character(0)
我尝试过使用崩溃和grep,但出现了同样的错误。
match<-paste("stop","here", collapse = "|")
while(line!=grep(match, line)){
有什么方法可以解决这个问题吗? 感谢
答案 0 :(得分:2)
您可以使用grepl
代替grep
,因为它直接返回logical
x <- file("file.txt", "r")
line <- readLines(x, 1)
while(!grepl("^stop here.+", line)) {
line <- readLines(x, 1)
}