unable to find an inherited method for function ‘select’ for signature ‘"data.frame"’报错及处理办法

今天用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函数。
接近办法:

  1. dplyr::select()

2.detatch AnnotationHub包。

3 安装conflicted包进行优先设置,并且这个包可以给出明确的报错信息和解决方案

devtools::install_github("r-lib/conflicted")
library(conflicted)

举例

> filter(a,Pathway.ID==ko00010)
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")

最便捷的还是把常用的包设置优先级
也就是

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]
......

你可能感兴趣的:(unable to find an inherited method for function ‘select’ for signature ‘"data.frame"’报错及处理办法)