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
要查看以下数据行是否包含此信息,您可以只读取满足此条件的数据行,然后再次应用degrep
函数,如下所示:
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,只是为了生成一个完整的代码)