У меня есть список имен файлов, как это:
список данных
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 в качестве стоп-маркера?





Использование gsub
gsub('.*_([^_]+)\\.dat','\\1',c("datalist EU_AU_abc100.dat","EU_AU_abc.dat"))
[1] "abc100" "abc"
.*_ любой символ, за которым следует _([^_]+) захватить любой символ, кроме _ между .*_ и .dat как группу 1. Затем вернуть эту группу \\1