R 返回第一个下划线后的所有字符

R Returning all characters after the first underscore

示例数据

x=c("AG.av08_binloop_v6","TL.av1_binloopv2")

示例尝试

y=gsub(".*_","",x)

需要样品

WANT=c("binloop_v6","binloopv2")

基本上我的目标是提取第一个下划线值之后的所有字符。

pattern中,我们可以将零个或多个任意字符(.* - 这里.是可以匹配任何字符的元字符)更改为零个或多个字符即不是字符串开头 (^) 的 _ ([^_]*)。

sub("^[^_]*_", "", x)
#[1] "binloop_v6" "binloopv2" 

如果我们不这样指定,_ 将匹配到字符串中的最后一个 _,直到该子字符串将丢失,返回 'v6' 和 'binloopv2'


一个更简单的选择是 word 来自 stringr

library(stringr)
word(x, 2, sep = "_")
#[1] "binloop"   "binloopv2"

regexpr 给出第一个匹配项的位置(在本例中为 _)。然后可以用substringx的部分从相关位置提取到最后(nchar(x))

substring(x, regexpr("_", x) + 1, nchar(x))
#[1] "binloop_v6" "binloopv2"