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
给出第一个匹配项的位置(在本例中为 _
)。然后可以用substring
把x
的部分从相关位置提取到最后(nchar(x)
)
substring(x, regexpr("_", x) + 1, nchar(x))
#[1] "binloop_v6" "binloopv2"
示例数据
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
给出第一个匹配项的位置(在本例中为 _
)。然后可以用substring
把x
的部分从相关位置提取到最后(nchar(x)
)
substring(x, regexpr("_", x) + 1, nchar(x))
#[1] "binloop_v6" "binloopv2"