R - 从文件读取行的部分匹配

时间:2015-03-25 14:11:02

标签: regex r

我有一个像这样的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)){

有什么方法可以解决这个问题吗? 感谢

1 个答案:

答案 0 :(得分:2)

您可以使用grepl代替grep,因为它直接返回logical

x <- file("file.txt", "r")
line <- readLines(x, 1)
while(!grepl("^stop here.+", line)) {
    line <- readLines(x, 1)
}