如果有一个向量x就是如何在特定模式后删除字符串或数字?
x <- c('/name12/?ad_2','/name13/?ad_3','/name14/?ad_4')
有没有办法删除“ad_”后,下面的数字?
所以转换的X显示为
'/name12/?ad_' '/name13/?ad_' '/name14/?ad_'
我试图用gsub
功能,但它并没有因为数字其次是“名”的工作。
如果有一个向量x就是如何在特定模式后删除字符串或数字?
x <- c('/name12/?ad_2','/name13/?ad_3','/name14/?ad_4')
有没有办法删除“ad_”后,下面的数字?
所以转换的X显示为
'/name12/?ad_' '/name13/?ad_' '/name14/?ad_'
我试图用gsub
功能,但它并没有因为数字其次是“名”的工作。
您可以使用带有sub
的正则表达式(因为您执行单个搜索和替换,您不需要gsub
)并根据需要在结果中包含或排除的内容使用模式。
您可以使用"(\\?ad_)[0-9]+$"
删除?ad_
+数字与"\\1"
替换恢复?ad_
值,或者只是匹配_
,然后数字(与_
替换)。
见演示代码:
> x <- c('/name12/?ad_2','/name13/?ad_3','/name14/?ad_4')
> sub("(\\?ad_)[0-9]+$", "\\1", x)
[1] "/name12/?ad_" "/name13/?ad_" "/name14/?ad_"
> sub("_[0-9]+$", "_", x)
[1] "/name12/?ad_" "/name13/?ad_" "/name14/?ad_"
图案的详细资料:
_
- 匹配下划线[0-9]+
- 1以上(由于量词匹配一个或多个匹配项,尽可能多)$
- 字符串的结尾。由于前缀是它们全部具有相同的长度:
x <- c('/name12/?ad_2','/name13/?ad_3','/name14/?ad_4')
substr(x,1,12)
[1]? “/ name12/ad_” “/ name13/ad_” “?/ name14/ad_”
否则我会grep
它。
尝试'gsub(“_ \\ d”,“_”,x)' –
当您尝试使用'gsub'功能时,您做了什么? –