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

JsW*_*JsW 9 r

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

library(dplyr)
dv %>% select(LGA)
select(dv, LGA) 
Run Code Online (Sandbox Code Playgroud)

他们都将因错误而失败

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

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

dplyr::select(dv, LGA)
Run Code Online (Sandbox Code Playgroud)

这是包中的功能冲突吗?

导入的所有库如下。

library(jsonlite)
library(geojsonio)
library(dplyr)
library(ggmap)
library(geojson)
library(leaflet)
library(mapview)
library(RColorBrewer)
library(scales)
Run Code Online (Sandbox Code Playgroud)

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

Ric*_*loo 19

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

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

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

library(dplyr)
library(raster)
library(conflicted)

d <- data.frame(a = 1:10, b = 1:10)
Run Code Online (Sandbox Code Playgroud)

现在,当我们调用 时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")
Run Code Online (Sandbox Code Playgroud)


小智 9

这个功能dplyr::select解决了我的问题。