2013-03-15 150 views
0

我有一個數據文件(其與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

回答

1

您可以使用正則表達式來刪除不需要的部分。

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 
相關問題