今天用select
函数出现报错,一开始没注意报错信息,因为我选择的列名有些复杂,怕是哪里掉了个空格,就重新换了个方法选列名,还是出错。
报错信息如下
> b <- select(a,X.Pathway, Pathway.ID, Genes)
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘select’ for signature ‘"data.frame"’
简单说,就是不知道为a这个数据框选择什么select
函数了。
直接输入select
发现在'AnnotationHub'这个包也有select
函数。
接近办法:
- 用
dplyr::select()
2.detatch
AnnotationHub包。
3 安装conflicted
包进行优先设置,并且这个包可以给出明确的报错信息和解决方案
devtools::install_github("r-lib/conflicted")
library(conflicted)
举例
代码语言:javascript复制> filter(a,Pathway.ID==ko00010)
代码语言:javascript复制Error: [conflicted] `filter` found in 2 packages.
Either pick the one you want with `::`
* dplyr::filter
* stats::filter
Or declare a preference with `conflict_prefer()`
* conflict_prefer("filter", "dplyr")
* conflict_prefer("filter", "stats")
最便捷的还是把常用的包设置优先级 也就是
代码语言:javascript复制conflict_prefer("filter", "dplyr")
另外可以用conflict_scout()
搜索当前安装的有冲突的包
> conflict_scout()
94 conflicts:
* `anyDuplicated` : [BiocGenerics]
* `append` : [BiocGenerics]
* `as.data.frame` : [BiocGenerics]
* `as.list` : [BiocGenerics]
* `basename` : [BiocGenerics]
* `boxplot` : [BiocGenerics]
......