Получить ключевое слово из имени файла в R - PullRequest
1 голос
/ 06 марта 2019

Я работаю с R / RStudio. У меня есть набор файлов с повторяющимся узором.

"protein_class_Abcd.txt"
"protein_class_Egh.txt"
"protein_class_Bdc.txt"

Я хочу вынуть «ключевое слово» {Abcd, Egh, Bdc} из имени файла и использовать его позже. Ключевое слово всегда идет после «protein_class_» и имеет длину 3 или 4 буквы, после которых следует .txt.

Ответы [ 4 ]

4 голосов
/ 06 марта 2019

Вы можете использовать регулярное выражение.

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.

1 голос
/ 06 марта 2019

Вы могли бы сделать ...

substr(x, 15, nchar(x)-4)

или программно

prefix  = "protein_class_"
postfix = ".txt"
substr(x, nchar(prefix)+1, nchar(x)-nchar(postfix))
1 голос
/ 06 марта 2019

Вы можете сделать это с помощью sub и регулярного выражения.

FileNames = c("protein_class_Abcd.txt",
"protein_class_Egh.txt",
"protein_class_Bdc.txt")

sub("protein_class_(.*)\\.txt", "\\1", FileNames)
[1] "Abcd" "Egh"  "Bdc" 
0 голосов
/ 06 марта 2019

Если вы используете настройку, которая допускает выражения Perl, вы можете использовать положительный взгляд (?<=pattern), чтобы получить текст, следующий за "protein_class_".Пакеты stringi и stringr делают это по умолчанию и имеют простые в использовании функции извлечения.

files <- c("protein_class_Abcd.txt", "protein_class_Egh.txt", "protein_class_Bdc.txt")
stringr::str_extract(files, "(?<=protein_class_)[A-Za-z]{3,4}")
#> [1] "Abcd" "Egh"  "Bdc"

Создано в 2019-03-06 с помощью представпакет (v0.2.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...