Link 个通用标识符的同义词
Link synonyms to a common identifier
我有一个 R 数据框(基因信息,~20000 个条目),简化后看起来像这样:
> head(alias_db)
Synonyms dbXref
1 PA1m|A2m|AI893533|MAM ENSMUSG00000030359
2 AA-NAT|Nat-2|Nat4|Snat ENSMUSG00000020804
一个基因有不同的名称(同义词),用“|”分隔和一个 dbXref 字段(数据库标识符)。我想创建一个如下所示的新数据框:
Names dbXref
1 Pzp ENSMUSG00000030359
2 A1m ENSMUSG00000030359
...
4 MAM ENSMUSG00000030359
5 Aanat ENSMUSG00000020804
...
基本上,同义词是键,dbXref 字段是我的值;我希望能够在同义词中搜索任何名称,然后使用其 dbXref 查找另一个更大的数据框。
最好的方法是什么?我在想这个:
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。环境用作键值字典。
更糟糕的是,我没有按要求获得数据框....
如果我对你的问题的理解正确,你可以从我的 "splitstackshape" 包中尝试 cSplit
,像这样:
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
我有一个 R 数据框(基因信息,~20000 个条目),简化后看起来像这样:
> head(alias_db)
Synonyms dbXref
1 PA1m|A2m|AI893533|MAM ENSMUSG00000030359
2 AA-NAT|Nat-2|Nat4|Snat ENSMUSG00000020804
一个基因有不同的名称(同义词),用“|”分隔和一个 dbXref 字段(数据库标识符)。我想创建一个如下所示的新数据框:
Names dbXref
1 Pzp ENSMUSG00000030359
2 A1m ENSMUSG00000030359
...
4 MAM ENSMUSG00000030359
5 Aanat ENSMUSG00000020804
...
基本上,同义词是键,dbXref 字段是我的值;我希望能够在同义词中搜索任何名称,然后使用其 dbXref 查找另一个更大的数据框。
最好的方法是什么?我在想这个:
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。环境用作键值字典。 更糟糕的是,我没有按要求获得数据框....
如果我对你的问题的理解正确,你可以从我的 "splitstackshape" 包中尝试 cSplit
,像这样:
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