前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >unable to find an inherited method for function ‘select’ for signature ‘"data.frame"’报错及处理办法

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

作者头像
Y大宽
发布2020-02-13 13:07:02
3.1K0
发布2020-02-13 13:07:02
举报
文章被收录于专栏:Y大宽Y大宽

今天用select函数出现报错,一开始没注意报错信息,因为我选择的列名有些复杂,怕是哪里掉了个空格,就重新换了个方法选列名,还是出错。 报错信息如下

代码语言:javascript
复制
> 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包进行优先设置,并且这个包可以给出明确的报错信息和解决方案

代码语言:javascript
复制
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()搜索当前安装的有冲突的包

代码语言:javascript
复制
> conflict_scout()
94 conflicts:
* `anyDuplicated` : [BiocGenerics]
* `append`        : [BiocGenerics]
* `as.data.frame` : [BiocGenerics]
* `as.list`       : [BiocGenerics]
* `basename`      : [BiocGenerics]
* `boxplot`       : [BiocGenerics]
......
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档