从向量中的值中删除可变数量的前导字符串

时间:2018-04-12 13:32:28

标签: r

我有一个简单的向量:

library(stringr)
a <- paste0("S", str_pad(1:360, 3, pad = "0"))
b <- sample(a, 180)

我想删除所有领先的&#34; S&#34;,&#34; S0&#34;,&#34; S00&#34;在b。怎么做?

3 个答案:

答案 0 :(得分:3)

我建议

sub("^S0*", "", b)

它将替换字符串开头的所有S和S后面的0+个零。它不会意外地删除字符串中间的S.

请注意,这也会在开头取代S000。如果要在初始S之后将其限制为最多两个零,则可以使用

sub("^S0{0,2}", "", b)

答案 1 :(得分:1)

您可以使用这组正则表达式:

sub("^0","", sub("^0" ,  "", sub("^S", "", b)))

答案 2 :(得分:1)

在这种情况下,由于您要删除正则表达式S|S0+容易描述的字符串,因此您可以使用sub(来自基础R)或者因为您正在使用{{1你可以使用stringr

str_replace

在这里会有很多正则表达式可以完成相同的工作,至少对于给出的例子而言。

最准确地描述OP一般想要的是str_replace(b, "S|S0+", "") 在另一个答案中给出的那个。