R語(yǔ)言的繁榮是毋庸置疑的,至少在科研界的地位蒸蒸日上,極大的占領(lǐng)了原來(lái)屬于各種商業(yè)繪圖軟件的市場(chǎng)。不僅僅是在于其免費(fèi)的屬性,更重要的是隨心所欲地自由定制。
但是參與的玩家多了之后,也會(huì)出現(xiàn)一些沖突。最近在運(yùn)行一些三五年前的代碼報(bào)錯(cuò)了,引發(fā)了我的思考。
正常的ID轉(zhuǎn)換并不會(huì)報(bào)錯(cuò)有時(shí)候我會(huì)使用 clusterProfiler 包的函數(shù) bitr進(jìn)行ID轉(zhuǎn)換,代碼如下:
> library (org.Mm.eg.db) > library (clusterProfiler) > gene <- bitr(rownames(need_DEG), fromType = "SYMBOL" , + toType = "ENTREZID" , + OrgDb = org.Mm.eg.db)'select()' returned 1 :1 mapping between keys and columns Warning message: In bitr(rownames(need_DEG), fromType = "SYMBOL" , toType = "ENTREZID" , : 19.2 % of input gene IDs are fail to map...但是五年前我是不用clusterProfiler 包的,之前的代碼是select函數(shù)
現(xiàn)在select函數(shù)就報(bào)錯(cuò)如下所示:
非常的詭異,首先它居然在沒有賦值的情況下就把我的輸入變量給修改了,不可思議!
實(shí)在是太不安全了?。?!
略微思考了一下,猜測(cè)應(yīng)該是這個(gè)select函數(shù)名字太大眾了,所以在很多包里面都有,出現(xiàn)了沖突!
搜索看看select函數(shù)來(lái)自于哪里可以看到優(yōu)先級(jí)最高多的是dplyr包:
Help on topic 'select' was found in the following packages: Subset columns using their names and types (in package dplyr in library ) Ridge Regression (in package MASS in library ) Objects exported from other packages (in package tidygraph in library ) Objects exported from other packages (in package clusterProfiler in library ) AnnotationDb objects and their progeny, methods etc. (in package AnnotationDbi in library )dplyr包設(shè)計(jì)的有問題啊,都不復(fù)制就修改了變量。鄙視它
我加上了select函數(shù)真正的來(lái)源代碼雖然復(fù)雜了一點(diǎn):
library (org.Mm.eg.db) gene_up=as.character(na.omit(AnnotationDbi::select(org.Mm.eg.db,keys = gene_up,columns = 'ENTREZID' ,keytype = 'SYMBOL' )[,2 ])) gene_down=as.character(na.omit(AnnotationDbi::select(org.Mm.eg.db,keys = gene_down,columns = 'ENTREZID' ,keytype = 'SYMBOL' )[,2 ])) head(gene_up)但是這次就不報(bào)錯(cuò)了。
教程的隱患?現(xiàn)在每次分析數(shù)據(jù),都引入一大波R包,優(yōu)先級(jí)關(guān)系很煩人,如果每個(gè)函數(shù)都需要顯式調(diào)用,我以前的代碼都會(huì)很麻煩!
最好的入門方式 如果你也想開啟自己的生物信息學(xué)數(shù)據(jù)處理生涯,但是自學(xué)起來(lái)困難重重,還等什么呢,趕快行動(dòng)起來(lái)吧!參加我們生信技能樹官方舉辦的學(xué)習(xí)班:
生信技能樹的粉絲都知道我們有一個(gè)全國(guó)巡講 的良心學(xué)習(xí)班,口碑爆棚,生物信息學(xué)入門省心省時(shí)省力!先看看大家的反饋吧: