2014-07-16 1 views
1

Привет, ребята, я пытаюсь сделать что-то простое. По какой-то причине gsub является рывком.gsub не заменяет ссылки в R

vector <- c("http://aa.bb.com/ss/who/searchpage/tab/message?sort_by=-topicPostDate&page=YOU","http://aa.bb.com/ss/who/searchpage/tab/message?filter=labels location&location=oh-my:DID IT","BLAH BLAH") 


subs <- c("http://aa.bb.com/ss/who/searchpage/tab/message?sort_by=-topicPostDate&page=", 
      "http://aa.bb.com/ss/who/searchpage/tab/message?filter=labels location&location=oh-my:") 

gsub(paste(subs,collapse = "|"),"",vector, fixed = TRUE) 

То, что я пытаюсь сказать, GSUB это заменить пункт 1 или 2 пункта в sub с «» если он найден в векторе. Кто-нибудь? Он не должен включать gsub. Я просто хочу, чтобы строка кода говорила «replace», если вы видите то или это или это с «» в векторе строк.

+3

При установке 'фиксированных = T'' | 'интерпретируется как часть строки шаблона. – jlhoward

+0

Удалено. Еще не повезло. – theamateurdataanalyst

+0

Так что я думаю, это потому, что, когда я удалил его, он начал интерпретировать специальные символы. – theamateurdataanalyst

ответ

0

Чтобы использовать | как «OR» в регулярных выражениях, вам нужно fixed=F.

Однако, ? в ваших шаблонах означает что-то: одно или нулевое появление символа раньше, вместо того, чтобы сопоставлять литерал ?, как вы хотите.

Один из способов обойти это, спасаясь от ? в subs:

subs <- gsub('?', '\\?', subs, fixed=T) 
gsub(paste(subs,collapse = "|"), "", vector, fixed=F) 
# [1] "YOU"  "DID IT" "BLAH BLAH" 
+0

красивые janos. благодаря! – theamateurdataanalyst