Функция фильтра в dplyr в R не работает

у меня есть фрейм данных в 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))

тем не менее, я получаю сообщение об ошибке "имя объекта" не найдено.

Я также получаю: в данных.матрица (данные): NAs введен принуждением.

объект " имя " явно находится в фрейме данных. Кто-нибудь может помочь?

4 ответов


похоже, что вы получаете установлен.

это работает для функций из любого пакета.


чтобы понять, почему это происходит, вы можете воссоздать ошибку довольно легко, выполнив следующие действия.

загрузить 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

убедитесь, что перезагрузить dplyr после stats и мы видим, что 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

я переустановил rlang пакет с сеансом перезапуска, и это помогло


Я думаю, вам нужно как установить с install.packages("dplyr") а затем используйте library команда library(dplyr) загрузить dplyr в память для использования.
Например,mtcars dataset является частью dplyr, Если я установлю только dplyr и затем введите head(mtcars) он не находит его. Как только я использую library команда найдена.