如果第一行包含特定字符,如何删除行中的3行?

问题描述:

我有一个数据文件(其与290线和2列的矩阵)所示:如果第一行包含特定字符,如何删除行中的3行?

# RIR1 
ABABABABABABABABAA 
ABABABABABABABABBA 
# WR 
ABABABABABABABABAB 
BABABBABABABABABAA 
# BR2 
ABABABABABABABBABA 
ABBABABABABABABABA 
# SL 
AAABABABABABABBABA 
AAABBABABABABABABA 

我想除去所有对于SL和WR(如实施例)的数据。所以,我只会有:

# RIR1 
ABABABABABABABABAA 
ABABABABABABABABBA 
# BR2 
ABABABABABABABBABA 
ABBABABABABABABABA 

我知道如何删除一行开始或包含的东西,但不知道如何与第3条线做。

这是我用一条线:提前

old<-old[!substr(old[1,],1,5)=="# BR2",] 
old<-old[!substr(old[1,],1,6)=="# RIR1",] 

感谢。

+1

什么是'old'请提供可重复的例子 – juba 2013-03-15 08:50:08

+0

它的一个类和结构? 'matrix'和结构是'chr [1:290,1:2]“96”“#”“1”...' – mahmood 2013-03-15 09:03:29

您可以使用正则表达式来删除不需要的部分。

txt <- '# RIR1 
ABABABABABABABABAA 
ABABABABABABABABBA 
# WR 
ABABABABABABABABAB 
BABABBABABABABABAA 
# BR2 
ABABABABABABABBABA 
ABBABABABABABABABA 
# SL 
AAABABABABABABBABA 
AAABBABABABABABABA' 

然后删除节WR可以参考以下使用gsub。 (注:cat命令仅用于打印出结果

cat(gsub('(.*)(# WR.*?)(#.*)', '\\1\\3', txt)) 

输出将是

# RIR1 
ABABABABABABABABAA 
ABABABABABABABABBA 
# BR2 
ABABABABABABABBABA 
ABBABABABABABABABA 
# SL 
AAABABABABABABBABA 
AAABBABABABABABABA