【发布时间】:2016-04-15 16:45:59
【问题描述】:
我有两个数据框:
第一个包含大量蛋白质,对此我进行了多次计算。这里是一个例子:
>Accession Description # Peptides A2 # PSM A2 # Peptides B2 # PSM B2 # Peptides C2 # PSM C2 # Peptides D2 # PSM D2 # Peptides E2 # PSM E2 # AAs MW [kDa] calc. pI
P01837 Ig kappa chain C region OS=Mus musculus PE=1 SV=1 - [IGKC_MOUSE] 10 319 8 128 8 116 7 114 106 11,8 5,41
P01868 Ig gamma-1 chain C region secreted form OS=Mus musculus GN=Ighg1 PE=1 SV=1 - [IGHG1_MOUSE] 13 251 15 122 16 116 16 108 324 35,7 7,40
P60710 Actin, cytoplasmic 1 OS=Mus musculus GN=Actb PE=1 SV=1 - [ACTB_MOUSE] 15 215 10 37 11 30 11 31 16 154 375 41,7 5,48
第二个包含感兴趣的蛋白质。这里是一个例子:
>complex Description Accession protein
TFIID [TAF1_MOUSE] Q80UV9-3 Isoform 3 of Transcription initiation factor TFIID subunit 1 OS=Mus musculus GN=Taf1 - [TAF1_MOUSE]
TFIID [TAF2_MOUSE] Q8C176 Transcription initiation factor TFIID subunit 2 OS=Mus musculus GN=Taf2 PE=2 SV=2 - [TAF2_MOUSE]
TFIID [TAF3_MOUSE] Q5HZG4 Transcription initiation factor TFIID subunit 3 OS=Mus musculus GN=Taf3 PE=1 SV=2 - [TAF3_MOUSE]
我想要做的:获取一个数据框,其中仅包含我对感兴趣的蛋白质的计算值。在第一次尝试中,我使用了:
fusion <- merge.data.frame(x=tableaucleanIPTAFXwoNA, y=sublist, by.x="Description", by.y="protein", all =FALSE)
但是,两个数据帧之间的蛋白质名称命名不同,使用合并功能不起作用。
那么,当“TAF10”是“转录起始因子 TFIID 亚基 10 OS=Mus musculus GN=Taf10 PE=1 SV=1 - [TAF10_MOUSE]”字符串文本的一部分时,如何对它进行部分匹配? 换句话说,我希望 R 只识别整个字符串的一部分。
我尝试使用 grep 函数:
idx2 <- sapply("tableaucleanIPTAFX$Description", grep, "sublist$Description")
但是,我明白了:
as.data.frame(idx2)
[1] tableaucleanIPTAFX.Description
<0 rows> (or 0-length row.names)
我猜是,模式没有被正确识别...然后我访问了 RegExr 网站,编写了一个正则表达式,以便可以识别我的 id 名称。我发现这可以将 [TRRAP_MOUSE] 识别为
转化/转录域相关蛋白 OS=Mus musculus GN=Trrap PE=1 SV=2 - [TRRAP_MOUSE] :
与
/(TRRAP_[MOUSE])\w+/g
我想知道如何将它实现到我的 id 列表(我的示例中的“描述”列)?
【问题讨论】:
-
请提供一些示例数据。