首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将同义词链接到公共标识符

将同义词链接到公共标识符
EN

Stack Overflow用户
提问于 2015-03-30 15:21:47
回答 1查看 56关注 0票数 2

我有一个R数据(基因信息,~20000个条目),看起来像这样,一旦简化:

代码语言:javascript
复制
> head(alias_db)
   Synonyms               dbXref   
1  PA1m|A2m|AI893533|MAM  ENSMUSG00000030359
2  AA-NAT|Nat-2|Nat4|Snat ENSMUSG00000020804

一个基因有着不同的名称(同义词),它们由“dbXref”和一个字段(数据库标识符)分隔。我想创建一个新的数据框架,如下所示:

代码语言:javascript
复制
  Names dbXref
1 Pzp   ENSMUSG00000030359
2 A1m   ENSMUSG00000030359
...
4 MAM   ENSMUSG00000030359 
5 Aanat ENSMUSG00000020804
...

基本上,同义词是键和dbXref字段my值;我希望能够搜索同义词中的任何名称,然后使用它的dbXref查找另一个更大的数据。

做这件事最好的方法是什么?我在想这个:

代码语言:javascript
复制
alias_db$SplitSynonyms=strsplit(alias_db$Synonyms,"|",fixed=TRUE)
geneNames<-new.env()
for(i in seq(nrow(alias_db)))
  {
    lapply(alias_db$SplitSynonyms[[i]],function(x) geneNames[[ x ]] <- alias_db$Ensembl[i])
  }

我不知道这是否真的有效率。sapply应该比for循环慢,然后我在strsplit创建的列表上使用lapply。该环境用作键值字典。更糟的是我没有按要求获得数据.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-30 16:36:10

如果我正确理解了您的问题,您可以从我的"splitstackshape“包中尝试cSplit,如下所示:

代码语言:javascript
复制
library(splitstackshape)
cSplit(alias_db, "Synonyms", "|", "long")
#    Synonyms             dbXref
# 1:     PA1m ENSMUSG00000030359
# 2:      A2m ENSMUSG00000030359
# 3: AI893533 ENSMUSG00000030359
# 4:      MAM ENSMUSG00000030359
# 5:   AA-NAT ENSMUSG00000020804
# 6:    Nat-2 ENSMUSG00000020804
# 7:     Nat4 ENSMUSG00000020804
# 8:     Snat ENSMUSG00000020804
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29350036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档