一个星期前我指出来了R语言包开发的一个现象:R语言的繁荣背后何尝没有隐患,很多函数名字被多个R包使用,这样就出现了冲突,所以我们需要显示调用具体的某个R包的某个函数。
恰好被隔壁Y叔看到了,所以立马给出来了解决方案,在听说你用的函数又撞名了? 可以看到conflicted
包超级好用,专门盯着你,让你报错!
可是,绝大部分人并不是R包开发者,我们不需要报错,我们需要的是解决方案.
比如,我在使用如下函数的时候,报错:
代码语言:javascript复制> showDatabaseCategory(CellChatDB)
Error: Problem with `summarise()` input `value`.
x could not find function "n"
ℹ Input `value` is `n()`.
ℹ The error occurred in group 1: annotation = "Cell-Cell Contact".
Run `rlang::last_error()` to see where the error occurred.
其实是因为这个函数本身里面封装了很多其它函数,但是作为用户我们并没有能力去修改这个函数本身。conflicted
包也没有用,我们需要的是解决方案!
所以我使用代码 ?summarise
查询了一下这个出现冲突了的函数是什么情况:
Summarise a data frame.
(in package plyr in library /Library/Frameworks/R.framework/Versions/4.0/Resources/library)
Objects exported from other packages
(in package plotly in library /Library/Frameworks/R.framework/Versions/4.0/Resources/library)
Summarise each group to fewer rows
(in package dplyr in library /Library/Frameworks/R.framework/Versions/4.0/Resources/library)
果然,绝大部分情况下,这个 summarise函数应该是来自于dplyr包,但是它的排名很靠后。但是我使用的是showDatabaseCategory函数,它里面封装的summarise函数我是无权修改的,我没办法跟之前:R语言的繁荣背后何尝没有隐患,那样通过指定某个R包的某个函数的方法来解决报错。
所以我使用代码 library(dplyr)
重新加载了一下 dplyr包,提升了它的优先级。
这样代码就不会报错啦。
机智如我!
再怎么强调生物信息学数据分析学习过程的计算机基础知识的打磨都不为过,我把它粗略的分成基于R语言的统计可视化,以及基于Linux的NGS数据处理:
- 《生信分析人员如何系统入门R(2019更新版)》
- 《生信分析人员如何系统入门Linux(2019更新版)》
把R的知识点路线图搞定,如下:
- 了解常量和变量概念
- 加减乘除等运算(计算器)
- 多种数据类型(数值,字符,逻辑,因子)
- 多种数据结构(向量,矩阵,数组,数据框,列表)
- 文件读取和写出
- 简单统计可视化
- 无限量函数学习