I'm trying to select columns from a data frame by the following code.
library(dplyr)
dv %>% select(LGA)
select(dv, LGA)
Both of them will fail with the error
Unable to find an inherited method for function ‘select’ for signature ‘"data.frame"’
But the following code will be fine.
dplyr::select(dv, LGA)
Is this a function confliction in packages?
All libraries imported are as the following.
library(jsonlite)
library(geojsonio)
library(dplyr)
library(ggmap)
library(geojson)
library(leaflet)
library(mapview)
library(RColorBrewer)
library(scales)
I'm new to R, so super confused how you guys deal with problems like this?
There's a great package that helps with package conflicts called conflicted.
If you type search()
into your console, you'll see an ordered vector of packages called the "search list". When you call select
, R searches through this "search path" and matches the first function called select
. When you call dplyr::select
you're calling it directly from the namespace dplyr
, so the function works as expected.
Here's an example using conflicted
. We'll load up raster and dplyr, which both have a select
function.
library(dplyr)
library(raster)
library(conflicted)
d <- data.frame(a = 1:10, b = 1:10)
Now when we call select
, we're prompted with the exact conflict:
> 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")
This function dplyr::select
solved my problem.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With