检查字符串向量是否包含从另外两个单词创建的单词

时间:2018-11-05 20:11:07

标签: r regex vector bioinformatics

我有非常长的字符串向量(肽)。

head(unique(pseq_list))
#[1] "GPPNHHMGPMSER"  "SLSGQCHHHGENLR" "HSSGQDKPHETYR"    
#"DHDKPHQQSDK"    "AHMESDK"        "HISESHEK"  

我想检查一下此载体中是否有其他两种肽产生的肽。例如,如果有"AHMESDK""AHME""SDK",我想知道。我尝试了grepl函数,但可能我的向量是long(?)。另外,如何保存这样的结果?

如果很难验证是否存在"AHMESDK" = "AHME" + "SDK",那么最好至少知道载体中是否含有其他肽段(例如"HISESHEK""SES" )。


@quant在评论中提供的上下文:

  

作为对没有生物学背景的每个人的说明。

     肽是大分子。我们的身体可以通过将不同的氨基酸“粘合”在一起来组成这些大分子。粘合在一起的氨基酸序列称为肽的一级结构,在生物信息学中,通常使用一个字母代码,请参见rpeptide.com以表示一级结构。

     

因此AHMESDK只是指由丙氨酸,组氨酸等组成的肽。

1 个答案:

答案 0 :(得分:2)

数据:

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]

这将为您提供可以通过组合其他两个肽构建的肽的列表。