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

时间:2019-06-02 02:37:53

标签: r

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

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的新手,所以超级困惑你们如何处理此类问题?

1 个答案:

答案 0 :(得分:1)

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

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

以下是使用conflicted的示例。我们将加载具有select函数的raster和dplyr。

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")