Данные:
pseq<-c("GPPNHHMGPMSER", "SLSGQCHHHGENLR", "HSSGQDKPHETYR", "DHDKPHQQSDK", "AHMESDK", "AHME", "SES", "HISESHEK")
Два подхода:
Подход 1:
peplist<-sapply(pseq,grep, pseq, value=TRUE)
Результат:
$GPPNHHMGPMSER
[1] "GPPNHHMGPMSER"
$SLSGQCHHHGENLR
[1] "SLSGQCHHHGENLR"
$HSSGQDKPHETYR
[1] "HSSGQDKPHETYR"
$DHDKPHQQSDK
[1] "DHDKPHQQSDK"
$AHMESDK
[1] "AHMESDK"
$AHME
[1] "AHMESDK" "AHME"
$SES
[1] "SES" "HISESHEK"
$HISESHEK
[1] "HISESHEK"
Это дает вам список, где для каждого элемента вы получаете список элементов, в которых он существует. Затем мы можем создать список только тех пептидов, которые присутствуют в других пептидах:
peplist[sapply(peplist,length)>1]
Подход 2:
pepcombs<-expand.grid(pseq,pseq) %>%
apply(1,paste0,collapse="")
pseq[pseq %in% pepcombs]
Это даст вам список пептидов, которые могут быть сконструированы путем объединения двух других пептидов.