我在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
Run Code Online (Sandbox Code Playgroud)
使用dplyr我希望使用grepl过滤和删除行:
require(dplyr)
UK_profiles.filtered <- filter(UK_profiles, !grepl("Rollup|Microsite|Mobile|Test|tset|Profile|Facebook|Unfiltered|returnurl", name))
Run Code Online (Sandbox Code Playgroud)
但是,我收到一个错误说:
找不到对象'名称'.
我也得到:
在data.matrix(数据)中:强制引入的NA.
该对象filter显然在数据框中.有人可以帮忙吗?
Spa*_*man 48
看起来你似乎得到了stats::filter功能,而不是那个dplyr.为了确保您获得正确的,请使用符号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
Run Code Online (Sandbox Code Playgroud)
你甚至不需要library(dplyr)为此工作 - 你确实需要dplyr安装.
这适用于任何包的功能.
小智 8
要了解为什么会发生这种情况,您可以按照以下步骤非常直接地重新创建错误。
加载 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
Run Code Online (Sandbox Code Playgroud)
卸载 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"
Run Code Online (Sandbox Code Playgroud)
重新加载统计信息和 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32145 次 |
| 最近记录: |