grep(pattern =“A。* comp”)的函数没有结果

时间:2013-11-11 13:33:37

标签: r

参考我以前的帖子

grep("A" & "comp") gives error

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

[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”完全正常。 然后我试着做一些更复杂的事情:

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

我编写了第一个似乎有效的函数,但是当我用ext(数据)运行它时,没有结果。

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(数据)

时,某种程度上没有反应

我也尝试使用print()代替return() 并使用if(result ==1)代替if(length(result)==1) 但它仍然没有用。

请帮帮我!!谢谢!

1 个答案:

答案 0 :(得分:0)

我认为,在这种代码的和平中,没有任何东西能说明“下一行是”B“与”comp“”。 但它可能不起作用,因为您说只有当length(result)为1时才会这样做而不是0或等于或大于1可能是length(result) != 0length(result) >= 1

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

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

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

相关问题