32

我正在努力删除字符串中下划线之前的子字符串。我想使用 * (通配符)作为下划线之前的位可以变化:

a <- c("foo_5", "bar_7")

a <- gsub("*_", "", a, perl = TRUE)

结果应如下所示:

> a
[1] 5 7

我也尝试过诸如“^* ”或“? ”之类的东西,但并没有真正奏效。

4

4 回答 4

56

以下代码适用于您的示例:

gsub(".*_", "", a)
于 2012-08-02T11:19:00.527 回答
7

或者,您也可以尝试:

gsub("\\S+_", "", a)
于 2016-04-09T20:20:57.263 回答
1

只是要指出,有一种方法使用来自 的函数tidyverse,我发现它比以下更具可读性gsub

a %>% stringr::str_remove(pattern = ".*_")
于 2020-06-02T18:43:53.480 回答
-2
as.numeric(gsub(pattern=".*_", replacement = '', a)
[1] 5 7
于 2017-07-23T03:08:37.003 回答