0

参考我之前的帖子

grep("A" & "comp") 给出错误

这是我的数据:未包含在数据中的标签/标题:时间、组、任务、完成与否、小时数、信用

[1]  10:00 A task1 comp 5:00 200                                                                
[2]  16:00 A task2 comp 3:00 130                                                                    
[3]  11:00 B task1 incomp 7:00 180                                                                                
[4]  17:00 B task2 comp 7:00 100                                                      
[5]  15:00 C task1 incomp 5:00 420                                               
[6]  19:00 C task2 comp 6:00 115   

我从@Codoremifa 获得了有关如何 grep 具有“A”和“comp”的行的帮助

我使用相同的代码来获取具有“B”和“comp”的行,这完全可以正常工作。然后我尝试做一些更复杂的事情:

获取包含“A”和“comp”的行,然后下一行是“B”和“comp”。

我写了第一个似乎可以工作的函数,但是当我用 ext(data) 运行它时,没有结果。

ext = function(filename = "data")
{
    rl = readLines(log)
    result = grep(
    x = rl,
    pattern = " A .* comp ",
    value = TRUE)

    if(length(result) == 1){
        rl = readLines(data)
        result = grep(
        x = rl, 
        pattern = " B.* comp ",
        value = TRUE)

 if(length(result) == 1) return(result)

 }
}

当我做 ext(data) 时不知何故没有响应

我也尝试过使用print()代替return() 并使用if(result ==1)代替if(length(result)==1) 但它仍然无法正常工作。

请帮帮我!谢谢!

4

1 回答 1

0

我认为在这种和平的代码中,没有什么可以说明“下一行是“B”和“comp””。但这可能行不通,因为您说只有 if length(result)is 1 才这样做,而不是不同于 0 或等于或大于 1 可能是length(result) != 0length(result) >= 1

要查看以下数据行是否包含此信息,您可以仅读取完成此条件的数据行,然后再次应用 degrep函数,例如:

data2<-data[c(result+1), ]
result2 = grep(
    x = data2, 
    pattern = " B.* comp ",
    value = TRUE)

你会得到包含“B”和“comp”的行,它的前一行包含“A”和“comp”。我希望它有效

于 2013-11-11T14:00:36.297 回答