R - строка подмножества от n-й позиции до первой точки - PullRequest
1 голос
/ 28 мая 2019

У меня есть список имен файлов, подобных этому:

DataList

EU_AU_abc100.dat
EU_AU_abc200.dat
EU_AU_abc300.dat
EU_AU_abc.dat

Я хочу иметь это:

abc100
abc200
abc300
abc

Как я могу это сделать? Я знаю substr(datalist, start = 6, stop = 12) например, но это не подходит для последнего примера. Есть идеи, как это решить? Можно ли как-то использовать .dat в качестве стоп-маркера?

1 Ответ

2 голосов
/ 28 мая 2019

Использование gsub

gsub('.*_([^_]+)\\.dat','\\1',c("datalist EU_AU_abc100.dat","EU_AU_abc.dat"))
[1] "abc100" "abc" 

.*_ любой символ, за которым следует _
([^_]+) захватывает любой символ кроме _ между .*_ и .dat как группу 1. Затем возвращает эту группу \\1

...