/ / dplyrのフィルター機能が動作しない - r、dplyr

dplyrのフィルタ機能が動作しない - r、dplyr

私はいわゆるRのようなデータフレームを持っています UK_profiles

row.names   id     name
1   1   8131437     Profile
2   2   8131719     WolverineCompetition
3   4   8132011     www.vaseline.com
4   10  23265829    www.keepingskinamazing.co.uk
5   23  8042743     Mobile
6   24  8043312     Test
7   25  90914664    Join Our Core
8   26  45272695    UDF
9   27  50547829    apps.euro-bureau.eu/fairathon
10  28  50916438    www.benjerry.intashop.com/
11  44  83667343    All Web Site Data
12  45  84556272    UK

dplyrを使って、greplを使って行をフィルタリングして削除したいと思っています:

require(dplyr)

UK_profiles.filtered <- filter(UK_profiles, !grepl("Rollup|Microsite|Mobile|Test|tset|Profile|Facebook|Unfiltered|returnurl", name))

しかし、オブジェクト "name"が見つかりませんというエラーが表示されます。

私も取得:data.matrix(データ):NAsは、強制によって導入されました。

オブジェクト "名前"は明らかにデータフレーム内にあります。誰かが助けてくれますか?

回答:

回答№1の場合は37

それは、あなたが stats::filter 機能ではなく dplyr 1。あなたが正しいものを取得するためには、表記法 dplyr::filter.

d = data.frame(x=1:10,
name=c("foo","bar","baz","bar","bar","baz","fnord","qar","qux","quux"))

filter(d, !grepl("ar|ux", name))
Error in grepl("ar|ux", name) : object "name" not found

dplyr::filter(d, !grepl("ar|ux", name))
x  name
1 1   foo
2 3   baz
3 6   baz
4 7 fnord

あなたもする必要はありません library(dplyr) これがうまくいくために - あなたは必要がある dplyr インストールされています。

これは、どのパッケージの関数でも機能します。


回答№2の場合は1

これがなぜ発生するのかを理解するには、以下の手順に従ってエラーを簡単に再現することができます。

負荷dplyr

負荷 dplyr 既定のライブラリのみが読み込まれた新しいセッションに移行し、 filter として動作します dplyr ロード後 stats

library(dplyr)
#>
#> Attaching package: "dplyr"
#> The following objects are masked from "package:stats":
#>
#>     filter, lag
#> The following objects are masked from "package:base":
#>
#>     intersect, setdiff, setequal, union

filter(mtcars, mpg < 15)
#>    mpg cyl disp  hp drat    wt  qsec vs am gear carb
#> 1 14.3   8  360 245 3.21 3.570 15.84  0  0    3    4
#> 2 10.4   8  472 205 2.93 5.250 17.98  0  0    3    4
#> 3 10.4   8  460 215 3.00 5.424 17.82  0  0    3    4
#> 4 14.7   8  440 230 3.23 5.345 17.42  0  0    3    4
#> 5 13.3   8  350 245 3.73 3.840 15.41  0  0    3    4

dplyrをアンロード

これにより、エラーが現在使用しようとしています stats::filter。アンローディング stats 関数と呼ばれる別のエラーがあります filter 見つけた

detach("package:dplyr")  # Unload dplyr
filter(mtcars, mpg < 15)  # Using stats::filter
#> Error in filter(., mpg < 15): object "mpg" not found

detach("package:stats")  # Unload stats

filter(mtcars, mpg < 15)
#> Error in filter(., mpg < 15): could not find function "filter"

リロード統計とdplyr

再読み込みを確認する dplyrstats 我々は、 dplyr バージョン filter 再び働く

library(stats)
library(dplyr)
#>
#> Attaching package: "dplyr"
#>
#> The following objects are masked from "package:base":
#>
#>     intersect, setdiff, setequal, union

filter(mtcars, mpg < 15)
#>    mpg cyl disp  hp drat    wt  qsec vs am gear carb
#> 1 14.3   8  360 245 3.21 3.570 15.84  0  0    3    4
#> 2 10.4   8  472 205 2.93 5.250 17.98  0  0    3    4
#> 3 10.4   8  460 215 3.00 5.424 17.82  0  0    3    4
#> 4 14.7   8  440 230 3.23 5.345 17.42  0  0    3    4
#> 5 13.3   8  350 245 3.73 3.840 15.41  0  0    3    4

回答№3の場合は1

私は再インストールしました レン 再起動セッションを伴うパッケージ


回答№4の場合は0

私はあなたが両方をインストールする必要があると思う dplyr 〜のパッケージ install.packages("dplyr") それから、 library コマンド library(dplyr) ロードする dplyr 使用のためにメモリに格納する。
たとえば、 mtcars データセットは dplyr、私はただインストールする場合 dplyr 入力して head(mtcars) それを見つけることはできません。 library コマンドが見つかりました。