在R中使用gsub删除数据框中的特定字母

delete specific letter in data frame using gsub in R

我有一个这样的数据框:

val                  value
a_green_0            0.1
a_green_01           0.2
....
a_green_0100         0.3
b_green_45            0.1
b_green_451           0.2
...
b_green_45100         0.2

我想删除数字 1,2,3,...100 以获得如下输出:

val                  value
a_green_0            0.1
a_green_0            0.2
....
a_green_0            0.3
b_green_45           0.1
b_green_45           0.2
...
b_green_45           0.2

我这样使用 gsub,但这没有用:

gsub("*green_0*", "green_0",train1)

如何解决这个问题?谢谢

根据显示的示例,这应该会给出预期的输出

sub("_(0|[1-9]{2})\d+", "_\1", df1$val)
#[1] "a_green_0"  "a_green_0"  "a_green_0"  "b_green_45" "b_green_45"
#[6] "b_green_45"

数据

df1 <- structure(list(val = c("a_green_0", "a_green_01", "a_green_0100", 
"b_green_45", "b_green_451", "b_green_45100"), value = c(0.1, 
0.2, 0.3, 0.1, 0.2, 0.2)), .Names = c("val", "value"), 
 class =  "data.frame", row.names = c(NA, -6L))

怎么样:

train1$val<-gsub("green_0.+","green_0",train1$val)