2013-11-27 2 views
1

Я хочу извлечь часть строки, но с условием if. Так что я ничего не извлекаю, если это условие истинно.gsub with grepl вместе

мой код ГНФАР

u<-c("18 ABC TEST1 17","ABC 18") 

u<-ifelse((grepl("(TEST2|TEST1|)",u,perl=T)==F)&(grepl("^(.*) ?([A-Z]+) ?(.*)",u,perl=T)==T) ,"\\1 \\2",u)) 

До сих пор я получил

c("18 ABC TEST1 17","\\1 \\2") 

Но я хочу

c("18 ABC TEST1 17","ABC") 

Заранее спасибо

ответ

1

Я не уверен, что вы хотите извлечь, но следующий поможет вы начинаете.

grepl возвратит вектор логических значений, на основании которых ifelse будет поэлементно выбор вектора u или вектора в результате gsub("^(.*) ?([A-Z]+) ?(.*)", "\\1 \\2", u)

ifelse((grepl("(TEST2|TEST1)", u, perl = T)), u, gsub("^(.*) ?([A-Z]+) ?(.*)", "\\1 \\2", u)) 
## [1] "18 ABC TEST1 17" "AB C" 
+0

спасибо, это сработало! – user2963882

Смежные вопросы