В коде VS просто нажмите «Пробел: 4» в правом углу и измените его на вкладку при редактировании Makefile.
Вы можете сделать это с помощью 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"
Если вы используете настройку, которая допускает выражения 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) sup>
Вы можете использовать регулярное выражение.
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.
Вы могли бы сделать ...
substr(x, 15, nchar(x)-4)
или программно
prefix = "protein_class_"
postfix = ".txt"
substr(x, nchar(prefix)+1, nchar(x)-nchar(postfix))