参考我以前的帖子
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)
但它仍然没有用。
请帮帮我!!谢谢!
答案 0 :(得分:0)
我认为,在这种代码的和平中,没有任何东西能说明“下一行是”B“与”comp“”。
但它可能不起作用,因为您说只有当length(result)
为1时才会这样做而不是0或等于或大于1可能是length(result) != 0
或length(result) >= 1
要查看以下数据行是否包含此信息,您只能读取完成此条件的数据行,然后再次应用de grep
函数,如:
data2<-data[c(result+1), ]
result2 = grep(
x = data2,
pattern = " B.* comp ",
value = TRUE)
你将获得包含“B”和“comp”的行,其前一行包含“A”和“comp”。我希望它有效