R Возвращение всех символов после первого подчеркивания - PullRequest
1 голос
/ 29 марта 2019

Образец ДАННЫХ

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

Образец ПОПЫТКА

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

Образец желаемый

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

В основном я стремлюсь извлечь все символы ПОСЛЕ первого значения подчеркивания.

Ответы [ 2 ]

2 голосов
/ 29 марта 2019

regexpr дает позицию первого совпадения (в данном случае _). Затем substring можно использовать для извлечения части x из соответствующей позиции до конца (nchar(x))

substring(x, regexpr("_", x) + 1, nchar(x))
#[1] "binloop_v6" "binloopv2" 
2 голосов
/ 29 марта 2019

В pattern мы можем изменить ноль или более любых символов (.* - здесь . - метасимвол, который может соответствовать любому символу) на ноль или более символов, которые не являются _ ([^_]*) с начала (^) строки.

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

Если мы не укажем его как таковой, _ будет соответствовать до последнего _ вstring и до тех пор, пока подстрока будет потеряна, возвращая v6 и binloopv2


Более простой вариант будет word из stringr

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