r - 如何在r中的条件匹配中使用管道?
问题描述
我在尝试通过在条件语句中使用管道运算符根据 2nd df 中可用的国家/地区过滤 1st df 中的数据时遇到错误。
参考国家 df
Overall_top5
########### output ###########
continent country gdpPercap
Africa Botswana 8090
Africa Equatorial Guinea 20500
Africa Gabon 19600
Africa Libya 12100
Africa Mauritius 10900
Americas Canada 51600
Americas Chile 15100
Americas Trinidad and Tobago 17100
主df
gap_longer
########### output #############
country year gdpPercap continent
Australia 2019 57100 Oceania
Botswana 2019 8090 Africa
Canada 2019 51600 Americas
Chile 2019 15100 Americas
Denmark 2019 65100 Europe
错误:当我尝试下面的代码时,它给了我错误:
gap_longer %>%
filter(year == 2019,
country %in% Overall_top5 %>% select(country) )
Error: Problem with `filter()` input `..1`. x no applicable method for 'select_' applied to an object of class "logical" i Input `..1` is `country %in% Overall_top5 %>% select(country)`. Run `rlang::last_error()` to see where the error occurred.
如何使用管道运行它?我可以使用 base R 运行它,但不知道如何使用管道修复它。
gap_longer %>%
filter(year == 2019,
country %in% Overall_top5$country )
原始数据
Overall_top5 <- structure(list(continent = c("Africa", "Africa", "Africa", "Africa", "Africa", "Americas", "Americas", "Americas"), country = c("Botswana", "Equatorial Guinea", "Gabon", "Libya", "Mauritius", "Canada", "Chile", "Trinidad and Tobago"), gdpPercap = c(8090L, 20500L, 19600L, 12100L, 10900L, 51600L, 15100L, 17100L)), row.names = c(NA, -8L), class = "data.frame")
gap_longer <- structure(list(country = c("Australia", "Botswana", "Canada", "Chile", "Denmark"), year = c(2019L, 2019L, 2019L, 2019L, 2019L), gdpPercap = c(57100L, 8090L, 51600L, 15100L, 65100L), continent = c("Oceania", "Africa", "Americas", "Americas", "Europe")), class = "data.frame", row.names = c(NA, -5L))
解决方案
首先,您想使用pull
而不是select
返回select
数据框而不是向量(但这并不能解决您的问题)。
您的问题来自优先级。在您的示例中,%in%
首先评估,然后评估%>%
. 要解决此问题,请使用括号。
gap_longer %>%
filter(
year == 2019,
country %in% (Overall_top5 %>% pull(country))
)
#> # A tibble: 3 x 4
#> country year gdpPercap continent
#> <chr> <dbl> <dbl> <chr>
#> 1 Botswana 2019 8090 Africa
#> 2 Canada 2019 51600 Americas
#> 3 Chile 2019 15100 Americas
推荐阅读
- python - Python使用单个对象对JSON对象进行分组
- javascript - 在快递中链接路线?
- elasticsearch - 如果我有数据文件夹的副本,如何恢复 Elasticsearch 已删除的索引?
- ms-access - 通过定时宏打印报告时访问错误“无当前记录”,但在我自己运行宏时不会
- xml - 解析 XML 节点值以导出到 CSV
- python - 电子商务客户/订单模型的训练机器学习模型
- c# - C# QueryStringRequestCultureProvider 本地化不起作用
- html - 有没有办法在不使用“显示:块”参数的情况下使表格的主体可滚动?
- html - Angular2 通用表的列宽
- android - 无法将数据添加到 Firestore (Android) 中的文档