【问题标题】:Unable to find an inherited method for function ‘select’ for signature ‘"data.frame"’找不到签名“data.frame”的函数“select”的继承方法
【发布时间】:2022-02-21 18:10:03
【问题描述】:

我正在尝试通过以下代码从数据框中选择列。

library(dplyr)
dv %>% select(LGA)
select(dv, LGA) 

它们都会因错误而失败

找不到签名“data.frame”的函数“select”的继承方法

但是下面的代码就可以了。

dplyr::select(dv, LGA)

这是包中的函数冲突吗?

所有导入的库如下。

library(jsonlite)
library(geojsonio)
library(dplyr)
library(ggmap)
library(geojson)
library(leaflet)
library(mapview)
library(RColorBrewer)
library(scales)

我是 R 新手,非常困惑你们如何处理这样的问题?

【问题讨论】:

    标签: r


    【解决方案1】:

    有一个很棒的包可以帮助解决包冲突,称为conflicted

    如果您在控制台中输入search(),您将看到一个有序的包向量,称为“搜索列表”。当您调用select 时,R 会搜索此“搜索路径”并匹配名为select 的第一个函数。当您调用dplyr::select 时,您是从命名空间dplyr直接 调用它,因此该函数按预期工作。

    这是一个使用conflicted 的示例。我们将加载 raster 和 dplyr,它们都有 select 函数。

    library(dplyr)
    library(raster)
    library(conflicted)
    
    d <- data.frame(a = 1:10, b = 1:10)
    

    现在当我们调用select 时,系统会提示我们确切的冲突:

    > select(d, a)
    Error: [conflicted] `select` found in 2 packages.
    Either pick the one you want with `::` 
    * raster::select
    * dplyr::select
    Or declare a preference with `conflict_prefer()`
    * conflict_prefer("select", "raster")
    * conflict_prefer("select", "dplyr")
    

    【讨论】:

      【解决方案2】:

      这个函数dplyr::select解决了我的问题。

      【讨论】:

        猜你喜欢
        • 2021-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-16
        • 1970-01-01
        相关资源
        最近更新 更多