unable to find an inherited method for function 『select』 for signature 『"data.frame"』報錯及處理辦法
- 2020 年 2 月 13 日
- 筆記
今天用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)舉例
> 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] ......

