前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言的繁荣背后何尝没有隐患

R语言的繁荣背后何尝没有隐患

作者头像
生信技能树
发布2020-11-19 14:43:34
9510
发布2020-11-19 14:43:34
举报
文章被收录于专栏:生信技能树

R语言的繁荣是毋庸置疑的,至少在科研界的地位蒸蒸日上,极大的占领了原来属于各种商业绘图软件的市场。不仅仅是在于其免费的属性,更重要的是随心所欲地自由定制。

但是参与的玩家多了之后,也会出现一些冲突。最近在运行一些三五年前的代码报错了,引发了我的思考。

正常的ID转换并不会报错

有时候我会使用 clusterProfiler 包的函数 bitr进行ID转换,代码如下:

代码语言:javascript
复制
> 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函数

现在select函数就报错

如下所示:

非常的诡异,首先它居然在没有赋值的情况下就把我的输入变量给修改了,不可思议!

实在是太不安全了!!!

略微思考了一下,猜测应该是这个select函数名字太大众了,所以在很多包里面都有,出现了冲突!

搜索看看select函数来自于哪里

可以看到优先级最高多的是dplyr包:

代码语言:javascript
复制
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包设计的有问题啊,都不复制就修改了变量。鄙视它

我加上了select函数真正的来源

代码虽然复杂了一点:

代码语言:javascript
复制
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)

但是这次就不报错了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正常的ID转换并不会报错
  • 现在select函数就报错
  • 搜索看看select函数来自于哪里
  • 我加上了select函数真正的来源
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档