我有非常长的字符串向量(肽)。
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只是指由丙氨酸,组氨酸等组成的肽。
答案 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]
这将为您提供可以通过组合其他两个肽构建的肽的列表。