某天,想收集一类药物的作用靶点,上了Drugbank获取了全部数据,加载到R中,解析出来后蒙圈了,它居然一个基因靶点对应了多个名称。这就很为难了。 能不能从基因的全称来批量获取其缩写呢? 到群上提了问,又双叒叕得到 jimmy老师的点拨。 library(org.Hs.eg.db)#org.Hs.eg.db 是用于geneID转换的包。物种为人类。Bioconductor上还有提供其他物种的。eg2Symbol=toTable(org.Hs.egSYMBOL)##将包中gene_symbol转换成数据框eg2name=toTable(org.Hs.egGENENAME)##将包中GENENAME转换成数据框anno=merge(eg2Symbol,eg2name,by='gene_id')#根据gene_id合并两个数据框genes=read.table('symbol.txt',stringsAsFactors = F)[,1]##导入自己的gene数据anno[match(genes,anno$gene_name),]##match函数匹配索引,获得自己的数据在包中整出来的数据框中的行位置write.csv(anno[match(genes,anno$symbol),],'symbol2name.csv')##写出文件0 代码里面很巧妙地用了两次Totable函数,虽然还不太懂它的作用,但好不好用,看效果,一运行就得到了基因和全称对应的数据框。 OK,之后导入数据执行代码。 此外,读了下生信菜鸟团的相关推文,发现这个包还有其他转换的用法。
比如,可以借助select函数从ENSG0编号或是ENTREZID获取对应的基因名称及全称。当然从基因的名称或者全称反过来获取前两者也是可以的。 ##例如 想通过基因全称获取它的缩写和ENTREZID 。这里的基因名就是keytype ensids <- c('tumor protein p53')#基因的全称cols <- c('SYMBOL','ENTREZID')#想提取的包中含有的相应信息所在的列select(org.Hs.eg.db, keys=ensids, columns=cols, keytype='GENENAME')##keytype设置输入的类型。这里是基因的名字。 bingo!运行完的结果 ![]() image.png 以此类推,要获取什么类别的信息,只要改函数中数据的key、colums对象,和keytype就好了! |
|
来自: 起风了xmj7lizp > 《生信》