| 
 某天,想收集一類藥物的作用靶點(diǎn),上了Drugbank獲取了全部數(shù)據(jù),加載到R中,解析出來(lái)后蒙圈了,它居然一個(gè)基因靶點(diǎn)對(duì)應(yīng)了多個(gè)名稱。這就很為難了。 能不能從基因的全稱來(lái)批量獲取其縮寫呢? 到群上提了問(wèn),又雙叒叕得到 jimmy老師的點(diǎn)撥。 library(org.Hs.eg.db)#org.Hs.eg.db 是用于geneID轉(zhuǎn)換的包。物種為人類。Bioconductor上還有提供其他物種的。eg2Symbol=toTable(org.Hs.egSYMBOL)##將包中g(shù)ene_symbol轉(zhuǎn)換成數(shù)據(jù)框eg2name=toTable(org.Hs.egGENENAME)##將包中GENENAME轉(zhuǎn)換成數(shù)據(jù)框anno=merge(eg2Symbol,eg2name,by='gene_id')#根據(jù)gene_id合并兩個(gè)數(shù)據(jù)框genes=read.table('symbol.txt',stringsAsFactors = F)[,1]##導(dǎo)入自己的gene數(shù)據(jù)anno[match(genes,anno$gene_name),]##match函數(shù)匹配索引,獲得自己的數(shù)據(jù)在包中整出來(lái)的數(shù)據(jù)框中的行位置write.csv(anno[match(genes,anno$symbol),],'symbol2name.csv')##寫出文件0代碼里面很巧妙地用了兩次Totable函數(shù),雖然還不太懂它的作用,但好不好用,看效果,一運(yùn)行就得到了基因和全稱對(duì)應(yīng)的數(shù)據(jù)框。 OK,之后導(dǎo)入數(shù)據(jù)執(zhí)行代碼。 此外,讀了下生信菜鳥團(tuán)的相關(guān)推文,發(fā)現(xiàn)這個(gè)包還有其他轉(zhuǎn)換的用法。 比如,可以借助select函數(shù)從ENSG0編號(hào)或是ENTREZID獲取對(duì)應(yīng)的基因名稱及全稱。當(dāng)然從基因的名稱或者全稱反過(guò)來(lái)獲取前兩者也是可以的。 ##例如 想通過(guò)基因全稱獲取它的縮寫和ENTREZID 。這里的基因名就是keytype ensids <- c('tumor protein p53')#基因的全稱cols <- c('SYMBOL','ENTREZID')#想提取的包中含有的相應(yīng)信息所在的列select(org.Hs.eg.db, keys=ensids, columns=cols, keytype='GENENAME')##keytype設(shè)置輸入的類型。這里是基因的名字。bingo!運(yùn)行完的結(jié)果  image.png 以此類推,要獲取什么類別的信息,只要改函數(shù)中數(shù)據(jù)的key、colums對(duì)象,和keytype就好了! | 
|  | 
來(lái)自: 起風(fēng)了xmj7lizp > 《生信》