Вы можете использовать регулярное выражение.
gsub("^protein_class_([a-zA-Z]{3,4})\\.txt$","\\1",x)
Где x - ваш входной вектор трех или более имен файлов.
Здесь \\1
относится к извлечению первой группы захвата, которая заключена в ()
. В этом случае это [a-zA-Z]{3,4}
. Это означает, что мы хотим сопоставить 3-4 буквы a-z
или A-Z
между protein_class_ и .txt.