2014-07-16 63 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说是sub替换为第1项或第2项“”如果发现向量。 有人吗?它不必涉及gsub。我只想要一行代码,如果你在一个字符串的矢量中看到这个或那个或者这个“”,那么这个代码就会被替换。

+3

当你设置'固定= T'的'|'被解释为模式字符串的一部分。 – jlhoward

+0

删除它。仍然没有运气。 – theamateurdataanalyst

+0

所以我猜这是因为当我删除它时,它开始解释特殊字符。 – theamateurdataanalyst

回答

0

要使用|表示正则表达式中的“或”,您需要fixed=F

但是,您的模式中的?意味着某些内容:以前的字符出现一次或零次,而不是根据需要匹配文字?

一个解决办法是为了躲避?subs

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

美丽的janos。谢谢! – theamateurdataanalyst