1. ホーム
  2. r

[解決済み] シグネチャ '"data.frame"' の関数 'select' に継承されたメソッドが見つかりません。

2022-03-04 11:03:05

質問

以下のコードでデータフレームから列を選択しようとしています。

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の初心者なので、みなさんがこのような問題にどう対処しているのか、超困惑しています。

どのように解決するのですか?

というパッケージのコンフリクトを解消するための素晴らしいパッケージがあります。 コンフリクト .

と入力すると search() をコンソールに入力すると、"search list"と呼ばれるパッケージの順序付きベクトルが表示されます。を呼び出すと 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")