2014-03-02 16 views
3

多次發生在串卸下子之間串份時子中的R

string="aaaaaaaaaSTARTbbbbbbbbbbSTOPccccccccSTARTddddddddddSTOPeeeeeee" 

我想刪除START和STOP之間發生的所有的份數,得到

"aaaaaaaaacccccccceeeeeee" 

如果我嘗試與 gsub("START(.*)STOP","",string)這給我 "aaaaaaaaaeeeeeee"雖然。

這樣做的正確方法是什麼?允許多次出現START和STOP?

回答

3

在那裏也添加一個?

gsub("START.*?STOP", "", string) 
# [1] "aaaaaaaaacccccccceeeeeee" 
+0

Ahhaaaa - 很多thx! –

0

幾乎沒有一樣阿南達的回答優雅,但也有使用stringr & plyr包一些其他方式。

library(stringr) 
library(plyr) 

start <- ldply(str_locate_all(string, 'START'))[1, 1] 
end <- ldply(str_locate_all(string, 'STOP')) 
end <- end[nrow(end), 2] 
expression <- str_sub(string, start, end) 
str_replace(string, expression, '')