grep(pattern=";A.*comp";)的函数没有结果

grep(pattern=";A.*comp";)的函数没有结果,r,R,参考我以前的帖子 这是我的数据:数据中未包含的标签/标题:时间、组、任务、完成与否、小时数、学分 [1] 10:00 A task1 comp 5:00 200 [2] 16:00 A task2 comp 3:00 130 [3

参考我以前的帖子

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

[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那里得到了关于如何对既有“A”又有“comp”的行进行grep的帮助

我用同样的代码得到了带有“B”和“comp”的行,这非常好。 然后我试着做一些更复杂的事情:

Get行包含带“comp”的“A”,然后下一行是带“comp”的“B”

我写了第一个函数,它看起来是工作的,但是当我用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(数据)时没有响应

我还尝试使用
print()
而不是
return()
使用
if(result==1)
代替
if(length(result)==1)
但它仍然不起作用


请帮帮我!!谢谢

我认为在这种代码的平静中,没有任何东西能告诉我们“下一行是带“comp”的“B”。 但它可能不起作用,因为您说过,只有当
length(result)
为1时,才执行此操作,而不是与0不同或等于或大于1,这可能是
length(result)!=0
长度(结果)>=1

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

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

data2tanks@Llopis!因此,对于代码长度(result)==1,我将其更改为=0,但它不工作。另外,您提供的代码为二进制运算符提供了一个错误+1:非数字参数-一直在联机搜索此错误,但无法找到如何修复它。请给我一些提示!谢谢我只想确定我想得到如下所示的行:[1]10:00A任务1补偿5:00200[2]16:00B任务2补偿3:00130[3]11:00 A task1 comp 7:00 180[4]17:00 B task1 comp 7:00 100 task1或task2无所谓。我尝试使用strsplit按空格将其拆分,并使用列grep…它还可以将包含“A”的任何行进行grep带“comp”或带“comp”的“B”。我怎样才能把它们放在一起?@user2978129您能打印出
dput(data)
所说的内容,以便在更改我的答案之前检查它是否有效。错误是因为结果是字符,它试图对其进行一些数字运算。(这就是为什么我要求dedput,只是为了生成一个完整的代码)