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

R Returning all characters after the first underscore

提问人:bvowe 提问时间:3/30/2019 更新时间:3/30/2019 访问量:10287

问:

示例数据

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

示例 ATTEMPT

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

样品 DESIRED

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

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

R GSUB的

评论

0赞 ali srn 3/30/2019
如果有两个或多个连续的下划线怎么办?

答:

14赞 akrun 3/30/2019 #1

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

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

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


一个更简单的选择是wordstringr

library(stringr)
word(x, 2, sep = "_")
#[1] "binloop"   "binloopv2"
4赞 d.b 3/30/2019 #2

regexpr给出第一个匹配项的位置(在本例中)。然后可用于提取部分从相关位置到末端(_substringxnchar(x))

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

评论

1赞 akrun 3/30/2019
我猜是最快的选项substring